很多人无编程经验,但是出于对学术的研究,需要用些辅助工具用于数据分析和作图不错。很多网上有人说学 R 有人说学 Python。
Python 在很多人口中无所不能,比如说编写一些自动化程序、黑别人网站、做游戏外挂之类那么,Python 真的那么神奇吗?
嗨喽:小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,
包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要的加Q裙:895817687
描述:Python 事实上应用范围更为广泛,而 R 语言一定程度上被局限在了数据处理、数据分析、数据挖掘领域。我认为可能有下列原因:
首先,R 作为一个想要继承 S 语言的遗产的语言,它一定程度上应该也继承了 S 的语法(不过我确实不了解 S 语言),这就导致它的许多表示对于熟悉了 C/C++/Java 这一系统语言的程序员感到许多不适。比如:赋值符号会是「<-」(虽然通常来说用「=」);而原本应该是属性访问的「.」居然可以作为变量名的一部分,类似的功能要用「 」 完 成 ( 比 如 P y t h o n 中 的 d a t a [ " s a l a r y " ] 或 d a t a . s a l a r y 到 了 R 里 面 会 是 d a t a 」完成(比如 Python 中的 data["salary"] 或 data.salary 到了 R 里面会是 data 」完成(比如Python中的data["salary"]或data.salary到了R里面会是datasalary),还有比如数组用「c()」表示。虽然这并不是语言设计的问题,但我确实很不喜欢这种不适感。
语法设计方面上,还有一个因素就是各种函数名缩写的一致性上。 R 嘛,可能也是有历史包袱的原因,非常的混乱,总是给人像 MATLAB 那样各种夸张、毫无限制的感觉。比如有的就是把单词的几个辅音拿来缩写,把几个单词首字母拿来缩写(比如 nnls 这样缩写 non-negative least squares),这样无论从可读性上、函数名的猜测上基本上非常难(可能是科研人员偷懒的通病,误)。这方面 Python 作为一个给有洁癖的人设计的语言(误),就会好很多。
另外也要看轮子的状况。Python 有那个 pip(Python Package Index)等几个仓库,R 语言有它那个可怕的 CRAN(The Comprehensive R Archive Network)(明显 CRAN 这个名字起得更吓人一些,而且另外能自称 Comprehensive Archive Network 的 只有 Perl 的 CPAN 和 TeX 的 CTAN 了,都是什么怪兽的量级的东西了),但轮子的方向其实很明显,Python 的轮子的方向更为多样,而 R 语言的轮子会更多得围绕数据统计分析方面。
然后从数据模型本身而言,Python 会是有「list」、「dict」这一类,传统意义上的编程模型,受经典编程训练的人就会用着比较爽吧,而响应的, R 里面可能会强调「dataframe」数据帧这些(或者有时候是「datatable」,这个记不清了),给统计人员用起来更舒服吧。
互联网疯狂发展的这十年来年,Python 在几家互联网公司的主推之下不可谓不是大红大紫如日中天。不过这几年来 R 乘着数据挖掘的东风,总给人一种东山再起的感觉。君不见微软在这几年开发者大会上也有提到 R 方面的东西。
个人感觉 R 给人的感觉和 Perl 更像一点,做某些事情非常好,但是以牺牲一部分东西作为代价的前者主推统计领域,后者更具备泛用性。而 Python 是仔细权衡了这种代价而清理过的 Perl 的。
R 加上 ggplot2 以及其他绘图包能做的事情大多 Python 或者搭配上 numpy、scipy、matplotlib 也能做,但做的风格如何,优不优雅的话就不好说了。个人更喜欢 Python 因为自己整体上更熟悉。所以具体怎么选还是看自己!