回复内容:
转一篇文章给楼主看下。中文原文:长篇巨献|数据科学界华山论剑:r与python巅峰对决英文原文应该是这里:choosing r or python for data analysis? an infographic如果你是数据分析领域的新兵,那么你一定很难抉择——在进行数据分析时,到底应该使用哪个语言,r还是python?在网络上,也经常出现诸如“我想学习机器语言,我应该用哪个编程语言”或者“我想快速解决问题,我应该用r还是python”等这类问题。尽管两个编程语言目前都是数据分析社区的佼佼者,但是它们仍在为成为数据科学家的首选编程语言而战斗。今天,就让我们从数据科学的角度,一步步比较这两大编程语言。#1 对阵双方介绍ladies and gentlemen,让我们隆重的介绍今天的对阵双方:r和python!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版。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)。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)。从定位角度看,r致力于提供更好的,对用户友好的数据分析、统计分析和绘图模型;而python则强调生产效率和代码的可读性。从定位角度看,r致力于提供更好的,对用户友好的数据分析、统计分析和绘图模型;而python则强调生产效率和代码的可读性。双方的用户群也有一定的差异。r主要用于学术和研究领域,如今正在快速拓展其企业市场的运用。python的使用者,是那些想深入钻研数据分析或者应用统计技术的程序员,以及向数据科学寻求帮护的开发者。用一句话总结:“越接近统计研究跟数据分析人,越倾向r;越接近工程开发工程环境的人,越倾向python”。双方的用户群也有一定的差异。r主要用于学术和研究领域,如今正在快速拓展其企业市场的运用。python的使用者,是那些想深入钻研数据分析或者应用统计技术的程序员,以及向数据科学寻求帮护的开发者。用一句话总结:“越接近统计研究跟数据分析人,越倾向r;越接近工程开发工程环境的人,越倾向python”。r和python都得到大量的社区支持,包括邮件列表(mailing lists)、用户贡献的文档、以及stackoverflow网站。此外,r还可以从研究人员、数据科学家、统计学家和数量分析专家那里得到更多的支持;而python则从开发者和程序员那里得到的支持。r和python都得到大量的社区支持,包括邮件列表(mailing lists)、用户贡献的文档、以及stackoverflow网站。此外,r还可以从研究人员、数据科学家、统计学家和数量分析专家那里得到更多的支持;而python则从开发者和程序员那里得到的支持。从实用性来讲,r通过几行代码就可以写出统计模型,尽管r有样式表,但并不是每个人都使用它们,可以用若干种方式写出同样的功能。在python中写代码和调试代码则更容易一些,主要是因为它的“优美”语法。但是代码的缩进会影响它的意思。并且,在python中,永远只有一种方式来写同样的功能。从实用性来讲,r通过几行代码就可以写出统计模型,尽管r有样式表,但并不是每个人都使用它们,可以用若干种方式写出同样的功能。在python中写代码和调试代码则更容易一些,主要是因为它的“优美”语法。但是代码的缩进会影响它的意思。并且,在python中,永远只有一种方式来写同样的功能。在灵活性方面,在r中使用复杂的公式很容易。各种各样的统计检验和统计模型都是现成的并且容易使用;相比r,python在完成以前没有做过的新奇的事情上,很灵活,开发人员也会用它写网站或其它应用的脚本。在灵活性方面,在r中使用复杂的公式很容易。各种各样的统计检验和统计模型都是现成的并且容易使用;相比r,python在完成以前没有做过的新奇的事情上,很灵活,开发人员也会用它写网站或其它应用的脚本。关于易学习性,开始学习r时有一个陡峭的学习曲线,一旦了解了最基本知识,就能很容易地学习更高级的知识。因此,对于有经验的程序员,r并不难。建议r的学习者查看datacamp上的练习和教程。关于易学习性,开始学习r时有一个陡峭的学习曲线,一旦了解了最基本知识,就能很容易地学习更高级的知识。因此,对于有经验的程序员,r并不难。建议r的学习者查看datacamp上的练习和教程。由于python看重可读性和易用性,使得它的学习曲线相对比较低并且平缓。因此,对于初级程序员,python 被认为是一个很好的编程语言。对于python学习者的建议是,尝试用《笨办法学python》学习的同时看视频做练习。两者都有自己的代码库。cran(the comprehensive r archive network)是一个很大的r包库,用户很容易为其贡献代码。r包是一个包含r函数、数据和编译代码的集合,r包在r中用一行代码即可安装。pypi(python package index)是python软件库,用户可以为pypi贡献代码,但实践起来有点困难。两者都有自己的代码库。cran(the comprehensive r archive network)是一个很大的r包库,用户很容易为其贡献代码。r包是一个包含r函数、数据和编译代码的集合,r包在r中用一行代码即可安装。pypi(python package index)是python软件库,用户可以为pypi贡献代码,但实践起来有点困难。计算机科学教授norm matloff 曾说过,“python并未建立起一个能与cran媲美的巨大的代码库,r在这方面领先巨大。但是,统计学并不是python的中心任务。”其实r与python并不是完全孤立的,在r中用户可以通过rpython包运行python代码,从python传递或获取数据,调用python函数或者方法。而在python中也可以使用rpy2包运行r代码,这提供了一个从python到r的底层接口。其实r与python并不是完全孤立的,在r中用户可以通过rpython包运行python代码,从python传递或获取数据,调用python函数或者方法。而在python中也可以使用rpy2包运行r代码,这提供了一个从python到r的底层接口。以上,从定性的角度进行了比较。现在,看看双方的定量数据。小二,上数据!以上,从定性的角度进行了比较。现在,看看双方的定量数据。小二,上数据!先看人气排名,下图左边为2013-2015年2月r和python人气比较(tiobe指标),右边为redmonk排名,它比较了github和stackoverflow上编程语言的相对性能。先看人气排名,下图左边为2013-2015年2月r和python人气比较(tiobe指标),右边为redmonk排名,它比较了github和stackoverflow上编程语言的相对性能。再看工作和薪资,2014 dice tech薪金调查显示,具有高薪技能和丰富经验的r使用者的平均工资为115,531美元,而python则为94,139美元再看工作和薪资,2014 dice tech薪金调查显示,具有高薪技能和丰富经验的r使用者的平均工资为115,531美元,而python则为94,139美元#2 数据分析战场#2 数据分析战场首先是用途。r的主要应用场景是,当数据分析任务需要独立运算,或者需要在单个服务器上分析;python的一般应用场景是,数据分析任务需要与网页应用整合,或者当统计代码需要并入成品数据库。首先是用途。r的主要应用场景是,当数据分析任务需要独立运算,或者需要在单个服务器上分析;python的一般应用场景是,数据分析任务需要与网页应用整合,或者当统计代码需要并入成品数据库。按任务类型划分,做探索性研究时,r语言很适合初学者。几行代码便可写出统计模型;而作为一个完整成熟的程序语言,python是为产品使用进行算法执行的一个工具。按任务类型划分,做探索性研究时,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和python notebook最受欢迎。建议初学者查看rodeo(被称为“python到数据科学ide”)。python最受欢迎的程序包有:pandas (易于操作数据),scipy/numpy(科学计算),sckikit-learn(机器学习),matplotlib(用于作图),statsmodels(数据探索、统计模型估计、统计检验和单元测试)。[建议]给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或者科学问题)同样,定性对比后再看看r和python的量化战争!同样,定性对比后再看看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。在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万美元之间。工作和薪资方面,o’reilly 2014数据科学工资调查显示,r和python平均年收入范围都是11万美元到12.5万美元之间。http://indeed.com上r与python的工作趋势显示,python的工作需求量高于r。现在很多人都选择同时使用r和python。有的策略是利用两种语言最好的部分——初始分析在r语言中进行,在需要更严格的分析、团队工作或者发布代码和数据产品时开始转换到python。有人是用r进行统计检验、画图和检查大数据,必须写算法时,则更倾向于用python。也有人说,更倾向于在通用语言中做数学计算,而不是用数学语言进行通用编程。现在很多人都选择同时使用r和python。有的策略是利用两种语言最好的部分——初始分析在r语言中进行,在需要更严格的分析、团队工作或者发布代码和数据产品时开始转换到python。有人是用r进行统计检验、画图和检查大数据,必须写算法时,则更倾向于用python。也有人说,更倾向于在通用语言中做数学计算,而不是用数学语言进行通用编程。[建议]选定语言只是万里长征第一步。如果你想要成为数据科学家,推荐你看一篇受欢迎度很高的文章“天龙八步:8步让你变成数据科学家”(点击查看)。[建议]选定语言只是万里长征第一步。如果你想要成为数据科学家,推荐你看一篇受欢迎度很高的文章“天龙八步:8步让你变成数据科学家”(点击查看)。#3 总决选:优缺点现在来比较一下两者的优缺点。r最大的优点在于其作图能力,俗话说,一图抵千言,相比单看原始数据,可视化后的数据能被更高效、更有效的理解。利用ggplot2 可以绘制优美的图表,使用图表算法创造图层、定制图表;lattice易于展示多变量关系;rcharts从r中建立、定制和呈现交互式java可视化;googlevis利用google表格工具在r中可视化数据;用ggvis对一个网页浏览器进行渲染时,可以实现图像的交互式语法,例如在r中可视化facebook好友。现在来比较一下两者的优缺点。r最大的优点在于其作图能力,俗话说,一图抵千言,相比单看原始数据,可视化后的数据能被更高效、更有效的理解。利用ggplot2 可以绘制优美的图表,使用图表算法创造图层、定制图表;lattice易于展示多变量关系;rcharts从r中建立、定制和呈现交互式java可视化;googlevis利用google表格工具在r中可视化数据;用ggvis对一个网页浏览器进行渲染时,可以实现图像的交互式语法,例如在r中可视化facebook好友。ipython最大的优点在于,ipython notebook使得用python分析数据变得容易,它可以将你的分析放在一个文件中。用python处理数据可以简化工作流程。它是一个组合,其中包括:交互式python数据探索、在一个环境下为文档提前写好程序、文本和公式。你可以跟同事分享笔记本,并且不用他们安装任何东西。ipython大大减少了管理代码、输出和笔记本文件的时间,这样可以有更多的时间做实际工作。r 的生态系统是它的另一项优势,先进的界面程序包使其能与开源语言进行交流,这让你把工作流程连成一串,对数据分析尤其有用。程序包可以从:cran( “task views”列出了大量可用的r语言程序包)、bioconductor (生物信息学的开源软件)、github (基于网络的git库主机服务)获得,在rdocumentation(首个r文档聚合器)中很容易搜索到这些资源。r的用户社区也做得非常优秀,包括meetup群组(其中一些由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 (当进行复杂的函数测试时,可以进行小测试)。r有一个不可替代的优势:统计的通用语言。r是统计学家为统计学家开发的,他们通过r代码和程序包交流统计分析思想和方法,即使是不会计算机编程语言的统计学家、工程师和科学家也会觉得r容易使用,因此提高了产业采用率。r也被用在金融、药物、医学和市场等领域,并且其作为商业分析工具的地位正在不断增长,在商业领域的最重要价值正被一些有才能的人所了解使用,r在学术界已经被广泛使用。r的使用量正在快速增长,其在学术文章中处于常用软件排名第三的位置(紧随sas和sap),且这一位置正在被巩固。r有一个不可替代的优势:统计的通用语言。r是统计学家为统计学家开发的,他们通过r代码和程序包交流统计分析思想和方法,即使是不会计算机编程语言的统计学家、工程师和科学家也会觉得r容易使用,因此提高了产业采用率。r也被用在金融、药物、医学和市场等领域,并且其作为商业分析工具的地位正在不断增长,在商业领域的最重要价值正被一些有才能的人所了解使用,r在学术界已经被广泛使用。r的使用量正在快速增长,其在学术文章中处于常用软件排名第三的位置(紧随sas和sap),且这一位置正在被巩固。与r相比,python是一个多用途语言。作为一个被大多数程序员所熟知的普遍且易于理解的编程语言,python也能把不同背景的人聚集到一起。例如,一些机构不想雇佣数据分析师或者雇佣新的数据分析师比较困难,就会培训老员工使用python。这意味着,python是一个现成的编程语言,它能够作为一个单独的工具与你工作流程中任意一部分结合。两者的缺点是什么呢?r运行慢,而这一点是故意为之。r的设计目的是使数据分析和统计分析变得容易,而不是为了让你的电脑“活得更轻松”。它有一个不完整的非正式定义,主要通过实现工作的方式来定义。除了设计和实现,大量r代码慢的原因很简单——代码写的很差。为改善这一点,可使用提高r性能的程序包:pqr(r翻译器的一个新版本)、renjin、fastr(在java中重新写r)、riposte(一个很快的解析器和jit)、revoscaler(用来处理大数据的商业软件)、foreach(用来提高并行编程的商业工具)。两者的缺点是什么呢?r运行慢,而这一点是故意为之。r的设计目的是使数据分析和统计分析变得容易,而不是为了让你的电脑“活得更轻松”。它有一个不完整的非正式定义,主要通过实现工作的方式来定义。除了设计和实现,大量r代码慢的原因很简单——代码写的很差。为改善这一点,可使用提高r性能的程序包:pqr(r翻译器的一个新版本)、renjin、fastr(在java中重新写r)、riposte(一个很快的解析器和jit)、revoscaler(用来处理大数据的商业软件)、foreach(用来提高并行编程的商业工具)。python最大的问题在于其可视化,选择数据分析软件时,可视化是一个重要原则。虽然python有一些很好的可视化程序库,包括:seaborn(基于matplotlib的程序库)、bokeh(交互式可视化程序库)和pygal(建立动态可伸缩向量图形(svg))。但python提供的可选择程序库过多,且与r对比,在python中进行可视化有些复杂,呈现的结果也并不是很令人满意。因为由统计学家开发,r另一个缺点是它陡峭的学习曲线。尽管任何人都可以使用gui得到结果,但没有人能够完全避开写程序,并且找程序包很花时间。你可以通过使用正确的工具解决这个问题,利用以下这些资料可以帮组你克服这个陡峭的学习曲线:包括datacamp上的练习和教程和上rdocumentation搜索程序包。因为由统计学家开发,r另一个缺点是它陡峭的学习曲线。尽管任何人都可以使用gui得到结果,但没有人能够完全避开写程序,并且找程序包很花时间。你可以通过使用正确的工具解决这个问题,利用以下这些资料可以帮组你克服这个陡峭的学习曲线:包括datacamp上的练习和教程和上rdocumentation搜索程序包。python另一个问题是它还不成熟,造成一种更受限制的方式去思考数据分析。截至目前,没有模块能够代替基本r程序包的100个。python正在努力克服这一问题, 其中一些解决办法包括:ipython中的r扩展允许在ipython notebook中方便使用r;现有资源和约定格局充当了一个重要角色:matlab通常用于发布开放的研究代码,python用于数学,r 用于统计。mlabwrap 连接了python和matlab,但是有些缺点,因此你需要学会两种程序语言,并且需要有一个matlab许可证。两种语言有很多共同优点。其一是开源,r和python都是对任何人免费,其它统计软件(如sas和spss)都是商业工具。两种语言有很多共同优点。其一是开源,r和python都是对任何人免费,其它统计软件(如sas和spss)都是商业工具。其二是他们都是高级工具,很多统计学的新进展会先在r和小范围的python开源程序包中出现,这比商业平台要早。第三是它们都提供在线社区,相对商业软件提供收费的用户支持,r和python利用在线社区对它们相应的用户提供支持。最后,二者使用者的薪水都比较高,根据o’reilly 2013数据科学工资调查显示,主要使用开源工具的数据科学家(130,000美元)比使用商业工具的数据科学家(90,000美元)的工资中值更高。#4 那么赢家是……#4 那么赢家是……最后的结果是平局!哪个工具更适合,取决于你这个数据科学家如何去挑选一个最适合你需要的程序语言。下面的问题可以指导你做出决定。1.你要解决什么样的问题2.你学习一门程序语言的成本?学习一个能更好地解决问题的新系统会花费时间,但依旧使用你熟悉的系统并不能解决你要解决的问题。3.在你的领域最常用的工具是什么?在你的领域中还有什么可用的工具,它们和那些常用工具有什么关系?参考资料
不要试图强制消灭物种多样性,这样是没有前途的
目前来看,不存在替换。但是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才是王道