Home  >  Article  >  Backend Development  >  Python在数据科学领域能否完全取代R?

Python在数据科学领域能否完全取代R?

WBOY
WBOYOriginal
2016-06-06 16:21:581293browse

回复内容:

转一篇文章给楼主看下。
中文原文:长篇巨献|数据科学界华山论剑:R与Python巅峰对决
英文原文应该是这里:Choosing R or Python for data analysis? An infographic
如果你是数据分析领域的新兵,那么你一定很难抉择——在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如“我想学习机器语言,我应该用哪个编程语言”或者“我想快速解决问题,我应该用R还是Python”等这类问题。尽管两个编程语言目前都是数据分析社区的佼佼者,但是它们仍在为成为数据科学家的首选编程语言而战斗。今天,就让我们从数据科学的角度,一步步比较这两大编程语言。

#1 对阵双方介绍
Python在数据科学领域能否完全取代R?Ladies and Gentlemen,让我们隆重的介绍今天的对阵双方:R和Python!
R语言当前版本是2015年6月更新的3.2.1版。Python 2当前版本是2015年5月更新的2.7.10版,Python 3当前的版本是2015年2月更新的3.4.3版。
Python在数据科学领域能否完全取代R?R语言是Ross Ihaka和Robert Gentleman于1995年开发的,作为贝尔实验室S编程语言的一种实现,其开发环境主要由C语言,Fortran和R来完成。Python的发布年份其实远在R之前。Guido Van Rossum于1991年开发完成了Python,并由Python软件基金会(PSF)负责其发展。其开发灵感主要来自C语言和Modula-3,部分来自ABC语言。Python的名字取自喜剧蒙提·派森的飞行马戏团(Monty Python's Flying Circus)。
Python在数据科学领域能否完全取代R?从定位角度看,R致力于提供更好的,对用户友好的数据分析、统计分析和绘图模型;而Python则强调生产效率和代码的可读性。
Python在数据科学领域能否完全取代R?双方的用户群也有一定的差异。R主要用于学术和研究领域,如今正在快速拓展其企业市场的运用。Python的使用者,是那些想深入钻研数据分析或者应用统计技术的程序员,以及向数据科学寻求帮护的开发者。用一句话总结:“越接近统计研究跟数据分析人,越倾向R;越接近工程开发工程环境的人,越倾向Python”。
Python在数据科学领域能否完全取代R?R和Python都得到大量的社区支持,包括邮件列表(Mailing Lists)、用户贡献的文档、以及Stackoverflow网站。此外,R还可以从研究人员、数据科学家、统计学家和数量分析专家那里得到更多的支持;而Python则从开发者和程序员那里得到的支持。
Python在数据科学领域能否完全取代R?从实用性来讲,R通过几行代码就可以写出统计模型,尽管R有样式表,但并不是每个人都使用它们,可以用若干种方式写出同样的功能。在Python中写代码和调试代码则更容易一些,主要是因为它的“优美”语法。但是代码的缩进会影响它的意思。并且,在Python中,永远只有一种方式来写同样的功能。
Python在数据科学领域能否完全取代R?在灵活性方面,在R中使用复杂的公式很容易。各种各样的统计检验和统计模型都是现成的并且容易使用;相比R,Python在完成以前没有做过的新奇的事情上,很灵活,开发人员也会用它写网站或其它应用的脚本。
Python在数据科学领域能否完全取代R?关于易学习性,开始学习R时有一个陡峭的学习曲线,一旦了解了最基本知识,就能很容易地学习更高级的知识。因此,对于有经验的程序员,R并不难。建议R的学习者查看DataCamp上的练习和教程。

由于Python看重可读性和易用性,使得它的学习曲线相对比较低并且平缓。因此,对于初级程序员,Python 被认为是一个很好的编程语言。对于Python学习者的建议是,尝试用《笨办法学Python》学习的同时看视频做练习。
Python在数据科学领域能否完全取代R?两者都有自己的代码库。CRAN(The Comprehensive R Archive Network)是一个很大的R包库,用户很容易为其贡献代码。R包是一个包含R函数、数据和编译代码的集合,R包在R中用一行代码即可安装。PyPi(Python Package Index)是Python软件库,用户可以为PyPi贡献代码,但实践起来有点困难。

计算机科学教授Norm Matloff 曾说过,“Python并未建立起一个能与CRAN媲美的巨大的代码库,R在这方面领先巨大。但是,统计学并不是Python的中心任务。”
Python在数据科学领域能否完全取代R?其实R与Python并不是完全孤立的,在R中用户可以通过rPython包运行Python代码,从Python传递或获取数据,调用Python函数或者方法。而在Python中也可以使用RPy2包运行R代码,这提供了一个从Python到R的底层接口。
Python在数据科学领域能否完全取代R?以上,从定性的角度进行了比较。现在,看看双方的定量数据。小二,上数据!
Python在数据科学领域能否完全取代R?先看人气排名,下图左边为2013-2015年2月R和Python人气比较(Tiobe指标),右边为Redmonk排名,它比较了GitHub和Stackoverflow上编程语言的相对性能。
Python在数据科学领域能否完全取代R?再看工作和薪资,2014 Dice Tech薪金调查显示,具有高薪技能和丰富经验的R使用者的平均工资为115,531美元,而Python则为94,139美元
Python在数据科学领域能否完全取代R?#2 数据分析战场
Python在数据科学领域能否完全取代R?首先是用途。R的主要应用场景是,当数据分析任务需要独立运算,或者需要在单个服务器上分析;Python的一般应用场景是,数据分析任务需要与网页应用整合,或者当统计代码需要并入成品数据库。
Python在数据科学领域能否完全取代R?按任务类型划分,做探索性研究时,R语言很适合初学者。几行代码便可写出统计模型;而作为一个完整成熟的程序语言,Python是为产品使用进行算法执行的一个工具。

数据处理能力上,使用R进行数据分析很容易上手,因为它具有庞大数量的包、方便使用的检验以及在使用公式方面的优势。做基本数据分析时,R语言更方便,不需要额外安装包,大的数据库需要使用类似data.table和dplyr包。过去,Python数据分析包的幼年期曾是个问题,但是现在已经得到很大的改善,用Python进行数据分析时,你需要使用NumPy、Pandas和其它的程序包。
Python在数据科学领域能否完全取代R?
如何上手也是比拼的一个方面。R的集成开发环境(IDE)可以选择RStudio。R最受欢迎的程序包有:dply、plyr和data.table(易于操作数据),stringr(易于操作字符串),zoo(处理规则和不规则时间序列),ggvis、lattice和ggplot2(数据可视化),caret(机器学习),建议初学者查看DataCamp上的课程和教程。

Python的集成开发环境(IDE)有很多,其中Spyder和Python Notebook最受欢迎。建议初学者查看Rodeo(被称为“Python到数据科学IDE”)。Python最受欢迎的程序包有:pandas (易于操作数据),SciPy/NumPy(科学计算),sckikit-learn(机器学习),matplotlib(用于作图),statsmodels(数据探索、统计模型估计、统计检验和单元测试)。
Python在数据科学领域能否完全取代R?
[建议]给Python初学者推荐“8步从Python白丁到专家”(点击查看)。若想了解更多Python包,请看“数据科学家之5个最佳Python库,为初学者定制的教程” (点击查看)。

关于技术支持,使用R进行数据分析有很多技术支持,包括Stackoverflow、Rdocumentation,(R文档整合)和R-help 邮件列表。

Python的数据分析问题可以通过以下方式获得支持:Stackoverflow和邮件列表。

邮件列表包括pydata(关于使用Python进行数据分析和Pandas包)、pystatsmodels (Statsmodels和pandas包的问题)、numpy-discussion (Numpy包的问题)和sci-py user(大部分是SciPy或者科学问题)
Python在数据科学领域能否完全取代R?同样,定性对比后再看看R和Python的量化战争!

从整体数据来看,在做数据分析时使用R的人数要多于使用Python(下图左:2014用于数据分析的程序语言)。在2014年,有23.45%的人同时使用R与Python(下图右:2014年R和Python使用分析)。
Python在数据科学领域能否完全取代R?在2008-2014年5月之间,Stack Overflow上问题标签是”R” 和/或 “Python”、“Pandas”的数量,R明显领先。在2015年3月12日到4月10日之间,在twitter上统计rstats, python numpy, python pandas和numpy这几个关键词,活跃度最大的是rstats。
Python在数据科学领域能否完全取代R?工作和薪资方面,O’Reilly 2014数据科学工资调查显示,R和Python平均年收入范围都是11万美元到12.5万美元之间。Indeed.com上R与Python的工作趋势显示,Python的工作需求量高于R。
Python在数据科学领域能否完全取代R?现在很多人都选择同时使用R和Python。有的策略是利用两种语言最好的部分——初始分析在R语言中进行,在需要更严格的分析、团队工作或者发布代码和数据产品时开始转换到Python。有人是用R进行统计检验、画图和检查大数据,必须写算法时,则更倾向于用Python。也有人说,更倾向于在通用语言中做数学计算,而不是用数学语言进行通用编程。
Python在数据科学领域能否完全取代R?[建议]选定语言只是万里长征第一步。如果你想要成为数据科学家,推荐你看一篇受欢迎度很高的文章“天龙八步:8步让你变成数据科学家”(点击查看)。

#3 总决选:优缺点
Python在数据科学领域能否完全取代R?现在来比较一下两者的优缺点。R最大的优点在于其作图能力,俗话说,一图抵千言,相比单看原始数据,可视化后的数据能被更高效、更有效的理解。利用ggplot2 可以绘制优美的图表,使用图表算法创造图层、定制图表;lattice易于展示多变量关系;rCharts从R中建立、定制和呈现交互式Java可视化;googleVis利用Google表格工具在R中可视化数据;用ggvis对一个网页浏览器进行渲染时,可以实现图像的交互式语法,例如在R中可视化Facebook好友。

IPython最大的优点在于,IPython Notebook使得用Python分析数据变得容易,它可以将你的分析放在一个文件中。用Python处理数据可以简化工作流程。它是一个组合,其中包括:交互式Python数据探索、在一个环境下为文档提前写好程序、文本和公式。你可以跟同事分享笔记本,并且不用他们安装任何东西。IPython大大减少了管理代码、输出和笔记本文件的时间,这样可以有更多的时间做实际工作。
Python在数据科学领域能否完全取代R?R 的生态系统是它的另一项优势,先进的界面程序包使其能与开源语言进行交流,这让你把工作流程连成一串,对数据分析尤其有用。程序包可以从:CRAN( “Task Views”列出了大量可用的R语言程序包)、Bioconductor (生物信息学的开源软件)、GitHub (基于网络的Git库主机服务)获得,在Rdocumentation(首个R文档聚合器)中很容易搜索到这些资源。R的用户社区也做得非常优秀,包括Meetup群组(其中一些由R用户社区的公司资助)、博客和社交网络。

Python是一种通用语言,其另一个优点在于它的可读性和学习曲线;同时,Python简单直观,它对可读性的重视更放大了这一特征。这就解释了为什么Python的学习曲线相对平缓,因而很多程序员很熟悉它。并且,你写一个程序的速度也得到正面影响:编程时间更少了,玩耍时间更多了。

Python的测试框架确保代码的可重复性和可靠性,一个内置低壁垒的测试框架能够支持一个很好的测试覆盖率。其测试工具分类包括:UnitTest Python(标准库中首个测试框架)、Nose (UnitTest的扩展,很多程序包使用它,如pandas)、DocTest (基于Python标准解释器的输出很容易生成测试),Pytest (当进行复杂的函数测试时,可以进行小测试)。
Python在数据科学领域能否完全取代R?R有一个不可替代的优势:统计的通用语言。R是统计学家为统计学家开发的,他们通过R代码和程序包交流统计分析思想和方法,即使是不会计算机编程语言的统计学家、工程师和科学家也会觉得R容易使用,因此提高了产业采用率。R也被用在金融、药物、医学和市场等领域,并且其作为商业分析工具的地位正在不断增长,在商业领域的最重要价值正被一些有才能的人所了解使用,R在学术界已经被广泛使用。R的使用量正在快速增长,其在学术文章中处于常用软件排名第三的位置(紧随SAS和SAP),且这一位置正在被巩固。

与R相比,Python是一个多用途语言。作为一个被大多数程序员所熟知的普遍且易于理解的编程语言,Python也能把不同背景的人聚集到一起。例如,一些机构不想雇佣数据分析师或者雇佣新的数据分析师比较困难,就会培训老员工使用Python。这意味着,Python是一个现成的编程语言,它能够作为一个单独的工具与你工作流程中任意一部分结合。
Python在数据科学领域能否完全取代R?两者的缺点是什么呢?R运行慢,而这一点是故意为之。R的设计目的是使数据分析和统计分析变得容易,而不是为了让你的电脑“活得更轻松”。它有一个不完整的非正式定义,主要通过实现工作的方式来定义。除了设计和实现,大量R代码慢的原因很简单——代码写的很差。为改善这一点,可使用提高R性能的程序包:pqR(R翻译器的一个新版本)、renjin、FastR(在Java中重新写R)、Riposte(一个很快的解析器和JIT)、RevoScaleR(用来处理大数据的商业软件)、Foreach(用来提高并行编程的商业工具)。

Python最大的问题在于其可视化,选择数据分析软件时,可视化是一个重要原则。虽然Python有一些很好的可视化程序库,包括:Seaborn(基于matplotlib的程序库)、Bokeh(交互式可视化程序库)和Pygal(建立动态可伸缩向量图形(SVG))。但Python提供的可选择程序库过多,且与R对比,在Python中进行可视化有些复杂,呈现的结果也并不是很令人满意。
Python在数据科学领域能否完全取代R?因为由统计学家开发,R另一个缺点是它陡峭的学习曲线。尽管任何人都可以使用GUI得到结果,但没有人能够完全避开写程序,并且找程序包很花时间。你可以通过使用正确的工具解决这个问题,利用以下这些资料可以帮组你克服这个陡峭的学习曲线:包括DataCamp上的练习和教程和上Rdocumentation搜索程序包。

Python另一个问题是它还不成熟,造成一种更受限制的方式去思考数据分析。截至目前,没有模块能够代替基本R程序包的100个。Python正在努力克服这一问题, 其中一些解决办法包括:IPython中的R扩展允许在IPython Notebook中方便使用R;现有资源和约定格局充当了一个重要角色:Matlab通常用于发布开放的研究代码,Python用于数学,R 用于统计。Mlabwrap 连接了Python和Matlab,但是有些缺点,因此你需要学会两种程序语言,并且需要有一个Matlab许可证。
Python在数据科学领域能否完全取代R?两种语言有很多共同优点。其一是开源,R和Python都是对任何人免费,其它统计软件(如SAS和SPSS)都是商业工具。

其二是他们都是高级工具,很多统计学的新进展会先在R和小范围的Python开源程序包中出现,这比商业平台要早。

第三是它们都提供在线社区,相对商业软件提供收费的用户支持,R和Python利用在线社区对它们相应的用户提供支持。

最后,二者使用者的薪水都比较高,根据O’Reilly 2013数据科学工资调查显示,主要使用开源工具的数据科学家(130,000美元)比使用商业工具的数据科学家(90,000美元)的工资中值更高。
Python在数据科学领域能否完全取代R?#4 那么赢家是……
最后的结果是平局!哪个工具更适合,取决于你这个数据科学家如何去挑选一个最适合你需要的程序语言。下面的问题可以指导你做出决定。
1.你要解决什么样的问题
2.你学习一门程序语言的成本?学习一个能更好地解决问题的新系统会花费时间,但依旧使用你熟悉的系统并不能解决你要解决的问题。
3.在你的领域最常用的工具是什么?
在你的领域中还有什么可用的工具,它们和那些常用工具有什么关系?

参考资料
Python在数据科学领域能否完全取代R? 不要试图强制消灭物种多样性,这样是没有前途的 目前来看,不存在替换。但是PYTHON确实会比R好用些。 Python做数据分析呈上升趋势,matplotlib越来越完善,甚至最新的Matlab很多库也借鉴了开源的matplot。

很多数据相关的课程这两年都改用python来完成作业,甚至奥本海默的离散时间信号这种爷爷辈的课都推荐用Python了。

工具这种东西嘛,哪个顺手用哪个就行了,R和Python用好了都很厉害。

不过,ipython+numpy+matplotlib+pylab确实太好用了。。。尤其在*nix下面。 勺子和筷子的关系 数据科学,这范围太广了,编程能力加上统计学数学功底外加不同领域的能力,一般是一个team,各司其职,有做业务需求分析的,有做数据处理,有做机器学习建模的,有做可视化的,所以,这定义太广泛了。仅凭R和python做不了。做数据分析的或者说统计学专业的人更偏重于R,做数据挖掘的工程师或者说计算机专业更喜欢用python,没什么哪个取代哪个,这好比问淘宝能否取代京东一般,一个平台大,一个物流给力,哪个的给顾客更佳的体验就选哪。总的来说,Python更加老牌,R最近非常流行。能学就都学会,知乎上有很多这方面的回答。 我曾经两次试图学R,但看到reshape矩阵都要导入一个包就感觉蛋疼无比,接下来又分不清向量、矩阵、列表、数据框、水平等各种非常类似又略有不同的数据类型,于是晕了,遂弃之。 没听说过胶片相机吧? 没玩儿过单反吧?題主是从智能手机开始拍照片的吧?

不是说从市场层面上没有取代都可能,而是每一次市场方向的选择都会让你恶心很多年,才会逐渐恢复到一个可以看的质量水平。 这个过程是相当恶心的。

同意金志鑫的观点,不要小看物种多样性 MATLAB怎么办 Python+R才是王道
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn