循环
在此之前让我们想想,如何比较Python与R。你真的想在R语言写很多循环吗?毕竟这两种语言的设计意图不太相同。
Python为0.000037秒,R为0.00158秒
包括加载时间和在命令行上运行:R需要0.238秒,Python需要0.147秒。强调,这并不是科学严谨的测试。
测试证明,Python的运行速度明显加快。通常这并没有太大影响。
除了运行速度外,对于数据科学家而言哪种性能更重要?两种语言之所以受欢迎是因为它们能被用作命令语言。例如,在使用Python时大多时候我们都很依赖Pandas。这涉及到每种语言中模块和库,以及其执行方式。
第三方支持
Python有PyPI,R语言有CRAN,两者都有Anaconda。
CRAN使用内置的install.packages命令。目前,CRAN上有大约1.2万个包。其中超过1/2的包都能用于数据科学。
PyPi中包的数量超过前者的10倍,约有14.1万个包。专门用于科学工程的有3700个。其中有些也可以用于科学,但没有被标记。
在两者中都有重复的情况。当搜索“随机森林”时,PyPi中可以得到170个项目,但这些包并不相同。
尽管Python包的数量是R的10倍,但数据科学相关的包的数量大致相同。
运行速度
比较DataFrames和Pandas更有意义。
我们进行了一项实验:比较针对复杂探索任务的执行时间,结果如下:
在大多数任务中Python运行速度更快。
来源:
http://nbviewer.jupyter.org/gist/brianray/4ce15234e6ac2975b335c8d90a4b6882
可以看到,Python + Pandas比原生的R语言DataFrames更快。注意,这并不意味着Python运行更快,Pandas 是基于Numpy用C语言编写的。
可视化
这里将ggplot2与matplotlib进行比较。
matplotlib是由John D. Hunter编写的,他是我在Python社区中最敬重的人之一,他也是教会我使用Python的人。
Matplotlib虽然不易学习但能进行定制和扩展。ggplot难以进行定制,有些人认为它更难学。
如果你喜欢漂亮的图表,而且无需自定义,那么R是不错的选择。如果你要做更多的事情,那么Matplotlib甚至交互式散景都不错。同样,R的ShinnyR能够增加交互性。
是否能同时使用
可能你会问,为什么不能同时使用Python和R语言?
以下情况你可以同时使用这两种语言:
· 公司或组织允许;
· 两种都能在你的编程环境中轻松设置和维护;
· 你的代码不需要进入另一个系统;
· 不会给合作的人带来麻烦和困扰。
一起使用两种语言的方法是:
· Python提供给R的包:如rpy2、pyRserve、Rpython等;
· R也有相对的包:rPython、PythonInR、reticulate、rJython,SnakeCharmR、XRPython
· 使用Jupyter,同时使用两者,例子如下:
之后可以传递pandas的数据框,接着通过rpy2自动转换为R的数据框,并用“-i df”转换:
来源:
http://nbviewer.jupyter.org/gist/brianray/734bd54f468d9a6db9171b2cfc98405a
预测
Kaggle上有人对开发者使用R还是Python写了一个Kernel。他根据数据发现以下有趣的结果:
· 如果你打算明年转向Linux,则更可能是Python用户;
· 如果你研究统计数据,则更可能使用R;如果研究计算机科学,则更可能使用Python;
· 如果你还年轻(18-24岁),则更可能是Python用户;
· 如果你参加编程比赛,则更可能是Python用户;
· 如果你明年想使用Android,则更可能是Python用户;
· 如果你想在明年学习SQL,则更可能是R用户;
· 如果你使用MS office,则更可能是R用户;
· 如果你想在明年使用Rasperry Pi,则更可能是Python用户;
· 如果你是全日制学生,则更可能是Python用户;
· 如果你使用的敏捷方法(Agile methodology),则更可能是Python用户;
· 如果对待人工智能,比起兴奋你更持担心态度,则更可能是R用户。
企业和个人偏好
当我与Googler和Stack Overflow的大神级人物Alex Martelli交流时,他向我解释了为什么Google最开始只官方支持少数几种语言。即使是在Google相对开发的环境中,也存在一些限制和偏好,其他企业也是如此。
除了企业偏好,企业中第一个使用某种语言的人也会起到决定性作用。第一个在德勤使用R的人他目前仍在公司工作,目前担任首席数据科学家。我的建议是,选择你喜欢的语言,热爱你选择的语言,起到领导作用,并热爱你的事业。
当你在研究某些重要的内容时,犯错是难以避免的。然而,每个精心设计的数据科学项目都为数据科学家留有一些空间,让他们进行实验和学习。重要的是保持开放的心态,拥抱多样性。
最后就我个人而言,我主要使用Python,之后我期待学习更多R的内容。
领取专属 10元无门槛券
私享最新 技术干货