R和Python,r和python哪个实用
中文:数据科学:R vs Python Peak。
中文:数据分析选择r还是python?信息图表
如果你是数据分析领域的新人,你一定很难决定3354应该在数据分析中使用哪种语言,r
还是Python?在网络上,经常会出现“我想学机器语言,应该用哪种编程语言”或者“我想快速解决问题,应该用R还是Python”这样的问题。虽然这两种编程语言都是目前数据分析社区中最好的,但它们仍在努力成为数据科学家的首选编程语言。今天我们就从数据科学的角度来一步步比较这两种编程语言。
1.双方介绍
女士们女士们先生们,来介绍一下今天的对手:R和Python!
R语言目前的版本是2015年12月更新的3.2.3版本。Python 2的当前版本是2015年12月更新的2.7.11版本,Python 3的当前版本是2015年12月更新的3.5.1版本。
r语言是由Ross Ihaka和Robert Gentleman于1995年开发的。作为贝尔实验室编程语言的实现,其开发环境主要由C语言、Fortran和r。
Python的发布年份其实远在1991年R. D lmdxh Van Rossum开发Python之前,由Python软件基金会(PSF)负责开发。它的开发灵感主要来自C语言和Modula-3,也有一部分来自ABC语言。Python的名字取自喜剧《kldby》的《巨蟒剧团的飞行马戏团》。
从定位来看,R致力于提供更好、更人性化的数据分析、统计分析、绘制模型;Python强调代码的生产力和可读性。
双方的用户群体也有一定的差异。
r主要用于学术和研究领域,现在正在快速拓展在企业市场的应用。Python用户是希望钻研数据分析或应用统计技术的程序员,以及向数据科学寻求帮助的开发人员。
用一句话概括:“越接近统计研究和数据分析的人,越倾向于R;越接近工程开发和工程环境的人,越偏爱Python”。
r和Python得到了大量社区的支持,包括邮件列表、用户贡献的文档、Stackoverflow网站等。此外,R可以从研究人员、数据科学家、统计学家、定量分析专家那里获得更多的支持;Python得到了开发者和程序员的支持。
实事求是地说,R可以通过几行代码写出统计模型。虽然R有样式表,但并不是每个人都使用它们,并且可以用几种方式编写相同的函数。用Python编写和调试代码更容易,主要是因为它“漂亮”的语法。但是代码的缩进会影响它的含义。而且,在Python中,总是只有一种方法来编写相同的函数。
灵活性方面,在r中很容易使用复杂的公式,各种统计检验和统计模型都有,很容易使用;与R相比,Python可以灵活地完成以前从未做过的新奇事物,开发者也可以用它来为网站或其他应用编写脚本。
至于简单易学的习惯,在学习r的初期有一个陡峭的学习曲线,一旦掌握了最基础的知识,就可以轻松学习更高级的知识。所以R对于有经验的程序员来说并不难。建议R的学习者查看DataCamp上的练习和教程。
因为Python看重可读性和易用性,所以它的学习曲线比较低,比较平缓。所以Python被认为是初级程序员很好的编程语言。对于Python学习者,尽量使用《笨办法学Python》边看视频边学习进行练习。
两者都有自己的代码库。CRAN(The Comprehensive R Archive Network)是一个大型的R包库,用户可以很容易地向它贡献代码。R包是R函数、数据和编译代码的集合。用r中的一行代码就可以安装r包,PyPi(Python包索引)是一个Python软件库。用户可以向PyPi贡献代码,但是实践起来有点困难。
计算机科学教授诺姆马特洛夫(Norm Matloff)曾说,“Python还没有构建出可以与CRAN相媲美的庞大代码库,R在这方面有着巨大的领先优势。但是,统计并不是Python的中心任务。
实际上,R并没有完全脱离Python。在R中,用户可以通过rPython包运行Python代码,从Python中传输或获取数据,调用Python函数或方法。在Python中,还可以使用RPy2包来运行R代码,它提供了一个从Python到R的底层接口。
以上,做了一个定性的比较。现在,看双方的量化数据。闪闪发光的石头,数据!
先看人气排名。下图左边是2013年2月到2015年2月R和Python的流行度(Tiobe指标)对比,右边是Redmonk排名,对比编程语言在Github和Stackoverflow上的相对表现。
看工作和薪资,2014年Dice Tech薪资调查显示,拥有高薪技能和丰富经验的R用户平均薪资为115531美元,而Python为94139美元。
2.数据分析的战场
首先是用途。
R的主要应用场景是当数据分析任务需要在单台服务器上独立运行或分析时;Python的一般应用场景是数据分析任务需要与web应用集成,或者统计代码需要并入成品数据库的时候。
根据任务类型,R语言非常适合初学者做探索性研究。一个统计模型可以用几行代码写出来;作为一门完整成熟的编程语言,Python是一个执行算法的工具,供产品使用。
在数据处理能力上,使用R进行数据分析很容易,因为它有庞大的包数,简单易用的测试和使用公式的优势。做基础数据分析的时候,R语言更方便,不需要额外的安装包。对于大型数据库,需要data.table和dplyr这样的包。以前Python数据分析包的婴儿期是个问题,现在已经有了很大的改善。使用Python进行数据分析时,需要使用NumPy、Pandas等包。
如何入门也是比赛的一个方面。r集成开发环境(IDE)可以选择RStudio。r最受欢迎的软件包有dply、plyr和data.table(易于操纵数据)、stringr(易于操纵字符串)、zoo(处理规则和不规则时间序列)、ggvis、lattice和ggplot2(数据可视化)、caret(机器学习)。建议初学者查看DataCamp上的课程和教程。
Python的集成开发环境(ide)有很多,其中最流行的是Spyder和IPython Notebook,还有PyCharm等。建议初学者查看Rodeo(被称为“Python到数据科学IDE”)。Python最流行的包有:pandas(易于操纵数据)、SciPy/NumPy(科学计算)、sckikit-learn(机器学习)、matplotlib(用于绘图)、statsmodels(数据探索、统计模型估计、统计测试和单元测试)。
【建议】为Python初学者推荐《从Python美鸽到专家的8个步骤》(点击查看)。要了解关于Python包的更多信息,请参见“数据科学家的5个最佳Python库,初学者教程”(点击查看)。关于技术支持,使用R进行数据分析的技术支持有很多,包括Stackoverflow、Rdocumentation、(R文档集成)、R-help邮件列表等。Python的数据分析问题可以通过以下方式支持:Stackoverflow和邮件列表。列表包括pydata(关于使用Python进行数据分析和熊猫包)、pystatsmodels (Statsmodels带Stats模型和熊猫包)、numpy-discussion (numpy带Numpy包的Numpy问题)和sci-py用户(大多是SciPy或科学问题)。
同样的,看定性对比后R和Python的定量大战!从整体数据来看,做数据分析时用R的人比用Python的人多(下图左边:2014年数据分析用的编程语言)。2014年有23.45%的人同时使用R和Python(右下图:2014年R和Python使用情况分析)。
2008年至2014年5月间,Stack Overflow上的问题标签数量为“R”和/或“Python”和“Pandas”,R明显领先。2015年3月12日-4月10日,我们统计了twitter上的关键词rstats,Python numpy,Python Pandas,numpy,最活跃的是rstats。
和薪资,O Reilly的2014年数据科学薪资调查显示,R和Python的平均年收入区间在11万美元到12.5万美元之间。R和Python在http://Indeed.com的工作趋势表明,Python的需求高于R
现在很多人选择同时使用R和Python。一些策略是利用两种语言中最好的部分,——,用R语言进行初步分析,在需要更严谨的分析、团队工作或发布代码和数据产品时,开始转换到Python。有人用R做统计测试,画图,查大数据。当他们不得不写算法时,他们更喜欢Python。也有人说更倾向于用通用语言做数学计算,而不是用数学语言做通用编程。
【建议】选择语言只是万里长征的第一步。如果你想成为一名数据科学家,推荐你阅读一篇非常受欢迎的文章《龙的八步:让你成为数据科学家的8个步骤》(点击查看)。
3.大选:优势与劣势
现在我们来比较一下两者的优缺点。
r最大的优势在于贴图能力。俗话说,一图胜千言。与只看原始数据相比,可视化的数据可以更高效、更有效地理解。使用ggplot2,可以绘制精美的图表,创建图层,用图表算法自定义图表;格子容易表现多元关系;RCharts构建、定制和呈现来自R的交互式Java可视化;GoogleVis通过使用Google电子表格工具在r中可视化数据;当用ggvis渲染网页浏览器时,可以实现图像的交互语法,比如用r可视化脸书朋友
IPython最大的好处就是IPython Notebook可以很方便的用Python分析数据,它可以把你的分析放在一个文件里。用Python处理数据可以简化工作流程。它是一个组合,包括:交互式Python数据探索,在一个环境中提前为文档编写程序、文本和公式。你可以和同事分享你的笔记本,你不需要他们安装任何东西。IPython大大减少了管理代码、输出、笔记本文件的时间,让更多的时间可以用在实际工作上。
r的生态系统是另一个优势,其先进的接口包使其能够与开源语言进行交流,这允许您连接工作流,这对数据分析特别有用。可以从:CRAN(“任务视图”列出了大量可用的R语言包)、Bioconductor(生物信息学开源软件)、Github(基于web的Git库托管服务),这些资源都可以在R document(第一个R文档聚合器)中轻松搜索到。R的用户社区也做得非常好,包括Meetup群组(其中一些由R用户社区中的公司资助)、博客和社交网络。
Python是通用语言,另一个优势在于可读性和学习曲线;同时,Python简单直观,对可读性的强调放大了这一特点。这就解释了为什么Python的学习曲线相对平缓,所以很多程序员都很熟悉。而且,你写程序的速度也是正面影响的:编程时间少,播放时间多。Python的测试框架保证了代码的可重复性和可靠性,内置低壁垒的测试框架可以支持良好的测试覆盖率。它的测试工具有:UnitTest Python(标准库中第一个测试框架),Nose(扩展Nose (UnitTest),很多包都用,比如pandas,DocTest(基于Python标准解释器的输出很容易生成测试),Pytest(进行复杂功能测试时,可以进行小测试)。
r有一个不可替代的优势:统计学的通用语言。r是统计学家为统计学家开发的。他们通过R码和包交流统计分析思想和方法。即使是不懂计算机编程语言的统计学家、工程师和科学家也会发现R很容易使用,从而提高工业采用率。r还被应用于金融、医药、医药、市场等领域,作为商业分析工具的地位越来越大。商业领域最重要的价值是被一些有才华的人所认识和使用,R在学术界已经被广泛使用。R的使用量增长很快,在学术文章中排在常用软件第三位(紧随SAS和SAP之后),这个地位正在巩固。与R相比,Python是一种多用途语言。Python作为大多数程序员都知道的通用且易于理解的编程语言,也能把不同背景的人聚集在一起。例如,一些组织不想雇用数据分析师或很难雇用新的数据分析师,所以他们会培训他们的老员工使用Python。这意味着Python是一种现成的编程语言,它可以作为一个独立的工具与您的工作流程的任何部分相结合。
两者的缺点是什么?
r跑的慢,这是故意的。r是为了让数据分析和统计分析变得简单,而不是让你的电脑“活得更轻松”。它有一个不完全的非正式定义,主要是以工作的实现方式来定义。除了设计和实现,大量R代码速度慢的原因很简单。——代码写得很差。要改善这一点,可以使用能够提高R性能的包:PQR(R translator的新版本)、任堇、FastR(用Java重写R)、Riposte(一种快速解析器和JIT)、RevoScaleR(处理大数据的商业软件)、Foreach(提高并行编程的商业工具)。
Python最大的问题是它的可视化。选择数据分析软件时,可视化是一个重要的原则。虽然Python有一些不错的可视化库,包括Seaborn(基于matplotlib的库)、Bokeh(交互式可视化库)和Pygal(构建动态可伸缩矢量图形(SVG))。但是Python提供的可选库太多,而且和R相比,Python中的可视化有些复杂,呈现的结果也不是很理想。
因为它是由统计学家开发的,R的另一个缺点是它陡峭的学习曲线。虽然任何人都可以使用GUI来获得结果,但没有人可以完全避免编写程序,并且需要时间来找到包。您可以通过使用正确的工具来解决这个问题,下面的材料可以帮助您克服这个陡峭的学习曲线:包括关于DataCamp和Rdocumentation搜索包的练习和教程。
Python的另一个问题是它不成熟,这导致思考数据分析的方式更加受限。到目前为止,还没有一个模块可以替代100个基础R包。Python正在努力克服这个问题,一些解决方案包括:IPython中的R扩展允许在IPython笔记本中方便地使用R;现有的资源和约定发挥着重要作用:Matlab通常用于发布开放的研究代码,Python用于数学,R用于统计。Mlabwrap连接了Python和Matlab,但是它有一些缺点,所以你需要学习两种编程语言,并且有Matlab许可证。
这两种语言有许多共同的优点。
一个是开源的,R和Python对任何人都是免费的,其他统计软件(比如SAS和SPSS)都是商业工具。第二,都是高级工具,很多新的统计发展会首先出现在R和小规模Python开源包中,比商业平台要早。第三,它们都提供在线社区,为商业软件提供付费用户支持。r和Python使用在线社区来支持它们对应的用户。最后,两个用户的工资都比较高。根据OReilly 2013数据科学薪酬调查,主要使用开源工具的数据科学家的薪酬中位数(13万美元)高于使用商业工具的数据科学家的薪酬中位数(9万美元)。
4.那么获胜者是.而最后的结果是平局!
哪种工具更合适,取决于你这个数据科学家如何选择最适合自己需求的编程语言。以下问题可以指导你做决定。
A.你想解决什么样的问题?
B.你学习一门编程语言的成本?学习一个能更好解决问题的新系统需要时间,但是仍然使用你熟悉的系统并不能解决你想解决的问题。
C.你所在领域最常用的工具是什么?在您的领域中还有哪些工具可用,它们与那些常用的工具有什么关系?
参考资料:
如何查看电脑配置历史中提交的图片或压缩文件?
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。