快捷搜索:  汽车  科技

python数据科学有用吗?数据科学101Python比R更好吗

python数据科学有用吗?数据科学101Python比R更好吗Python和R都拥有庞大的用户群体和支持力量。Stack Overflow在2017年的一项调查显示,近45%的数据科学家使用Python作为他们主要的编程语言。另一方面,11.2%的数据科学家使用R。Guido van Rossum(左)Ross Ihaka(中)Robert Gentleman(右一个简短的介绍Python由Guido van Rossum发明,于1991年首次发布。Python 2.0于2000年发布,八年后发布了Python 3.0。Python 3.0有一些主要的语法修订,与Python 2.0不兼容。但是,有一些Python库,如2to3(https://docs.python.org/2/library/2to3.html),可以在两个版本之间自动转换。Python 2.0目前计划在2020年退出市场。R由Ross Ihaka和Robert Gentlema

点击上方关注,All in AI中国

作者:Enoch Kan

python数据科学有用吗?数据科学101Python比R更好吗(1)

几十年来,研究人员和开发人员一直在争论Python和R哪个才是更好的数据科学和分析语言。数据科学在生物技术、金融和社交媒体等多个行业中迅速发展。它的重要性不仅得到了业内人士的认可,而且得到了现在开始提供数据科学学位的学术机构的认可。 随着开源技术的采用迅速取代了传统的闭源商业技术,Python和R语言在数据科学家和分析师中变得非常受欢迎。

python数据科学有用吗?数据科学101Python比R更好吗(2)

数据科学就业增长图表- Indeed.com

一个简短的介绍

Python由Guido van Rossum发明,于1991年首次发布。Python 2.0于2000年发布,八年后发布了Python 3.0。Python 3.0有一些主要的语法修订,与Python 2.0不兼容。但是,有一些Python库,如2to3(https://docs.python.org/2/library/2to3.html),可以在两个版本之间自动转换。Python 2.0目前计划在2020年退出市场。

R由Ross Ihaka和Robert Gentleman于1995年发明。它最初是一种S编程语言的实现,由John Chambers于1976年发明。一个稳定的测试版本1.0.0于2000年发布。目前,它由R 核心开发团队维护,最新的稳定版本为3.5.1。与Python不同,R在过去没有重大的需要语法转换的更改。

python数据科学有用吗?数据科学101Python比R更好吗(3)

Guido van Rossum(左)Ross Ihaka(中)Robert Gentleman(右

Python和R都拥有庞大的用户群体和支持力量。Stack Overflow在2017年的一项调查显示,近45%的数据科学家使用Python作为他们主要的编程语言。另一方面,11.2%的数据科学家使用R。

python数据科学有用吗?数据科学101Python比R更好吗(4)

“2017年开发者调查结果”- Stack Overflow

值得注意的是,Python,特别是Jupyter笔记本,近年来已经得到了极大的普及。虽然Jupyter笔记本可用于Python以外的语言,但它主要用于在浏览器中记录和展示Python程序,以参加诸如Kaggle这样的数据科学竞赛。(https://www.kaggle.com/)Ben Frederickson进行的一项调查显示,Jupyter笔记本在Github上的每月活跃用户(MAU)百分比在2015年后大幅上升。(https://www.benfrederickson.com/ranking-programming-languages-by-github-users/)

python数据科学有用吗?数据科学101Python比R更好吗(5)

“GitHub用户对编程语言的排名”- Ben Frederickson

随着近年来Python越来越受欢迎,我们观察到使用R编码的Github用户中MAU百分比略有下降。尽管如此,这两种语言在数据科学家、工程师和分析师中仍然非常受欢迎。

可用性

R最初用于研究和学术领域,而现在它已不仅仅是一种统计语言。R可以从CRAN轻松下载。CRAN还可用作包管理器,可下载10 000多个包。许多流行的开源IDE(如R Studiocan:https://www.rstudio.com/)可以用于运行R。作为统计学专业,我认为R在Stack Overflow上拥有非常强大的用户社区。我在本科学习期间遇到的关于R的大多数问题都可以在Stack Overflow的R-tagged Q和A上得到解答。(https://stackoverflow.com/questions/tagged/r)如果你刚开始学习R,那么很多MOOC如Coursera也提供入门R和Python课程。(https://www.coursera.org/learn/r-programming)

在本地计算机上设置Python工程环境同样容易。事实上,最近的Mac电脑安装了内置的Python 2.7和一些有用的库。如果你像我一样是狂热的Mac用户,我建议你在Mac OSX上查看Brian Torres-Gil的Python权威指南(https://medium.com/@briantorresgil/definitive-guide-to-python-on-mac-osx-65acd8d969d0),以获得更好的Python设置。可以从其官方站点轻松下载开源Python包管理系统,如PyPI和Anaconda。当然,Anaconda也支持R。(https://anaconda.org/anaconda/python)大多数人更喜欢直接通过CRAN管理包。PyPI或Python通常具有比R更多的包。但是,并非所有100 000 包都适用于统计和数据分析。

可视化

Python和R都具有出色的可视化库。由R Studio的首席科学家Hadley Wickham创建的ggplot2现在是R历史上最受欢迎的数据可视化软件包之一。(https://github.com/hadley/ggplot2-book)与基础的R图形相比,我非常喜欢ggplot2的各种功能和自定义。ggplot2允许用户以更高的抽象级别自定义绘图组件。ggplot2提供50多种适用于不同行业的地块。我最喜欢的图包括日历热图、层次树形图和集群。Selva Prabhakaran有一个关于如何开始使用ggplot2的精彩教程。(http://r-statistics.co/Complete-Ggplot2-Tutorial-Part1-With-R-Code.html)

python数据科学有用吗?数据科学101Python比R更好吗(6)

ggplot2中的日历热图(左上),集群(左下)和层次树状图(右)

Python还有很好的数据可视化库。matplotlib及其seaborn扩展对可视化和生成有吸引力的统计图非常有帮助。我强烈建议你查看George Seif的5个使用代码的Python快速简便数据可视化,以便更好地理解matplotlib。(https://towardsdatascience.com/5-quick-and-easy-data-visualizations-in-python-with-code-a2284bae952f)matplotlib与R的ggplot2类似,它能够创建各种各样的图,从直方图到向量流场图和雷达图。也许matplotlib最酷的功能之一是地形山体阴影图,我认为它比R raster's hillShade()函数更强大。

python数据科学有用吗?数据科学101Python比R更好吗(7)

使用matplotlib的地形山体阴影图

R和Python都有Leaflet.js的包装器,这是一个用Javascript编写的漂亮的交互式地图模块。我之前写了一篇关于如何使用Folium可视化房产价格的文章(https://medium.com/coinmonks/visualizing-property-prices-in-hong-kong-with-pandas-overpy-and-folium-595240ffca90)。Leaflet.js是我使用过的更好的开源GIS技术之一,因为它提供了与OpenStreetMaps和Google Maps的无缝集成。你还可以使用Leaflet.js轻松创建吸引人的气泡贴图、热图和等值线图。我建议你使用Leaflet.js的Python和R包装器,因为与Basemap和其他GIS库相比,它的安装要简单得多。

或者,Plotly是两种语言通用的令人惊叹的图形库。(http://plot.ly/)Plotly(或Plot.ly)是使用Python构建的(特别是Django框架)。它的前端是用JavaScript构建的,并与Python,R,MATLAB,Perl,Julia,Arduino和REST集成。如果你正在尝试构建一个webapp来展示你的可视化,我强烈建议你使用Plotly,因为它具有很棒的交互式图表。

python数据科学有用吗?数据科学101Python比R更好吗(8)

Iris数据集的绘图相关图

预测分析

正如我之前提到的,Python和R都有强大的预测分析库。在高水平的预测建模中很难比较两者的表现。R是专门作为统计语言编写的,因此与Python相比,它搜索与统计建模有关的信息要容易得多。在R中对逻辑回归一词进行简单的谷歌搜索将返回6 000万条结果,这是在Python中搜索逻辑回归所得结果数量的37倍。但是,对于具有软件工程背景的数据科学家可能更容易使用Python,因为R是由统计学家编写的。虽然我发现与其他编程语言相比,R和Python同样易于理解。

Kaggle用户NanoMathias对Python和R哪一个是预测分析中的更好工具进行了彻底的调查。(https://www.kaggle.com/nanomathias/predicting-r-vs-python) 他总结说,在数据科学家和分析师中,Python和R用户的数量几乎相等。他的研究中一个有趣的发现是,已经编码了12年以上的人倾向于选择R而不是Python。这表明程序员选择R或Python进行预测分析,更多的原因是他们的个人偏好做出的决定。

python数据科学有用吗?数据科学101Python比R更好吗(9)

R和Python用户分析

嗯......所以普遍的共识是两种语言在预测能力方面都非常相似。让我们使用R和Python将逻辑回归模型拟合到Iris数据集,并计算其预测的准确性。(https://archive.ics.uci.edu/ml/datasets/iris)我选择Iris数据集是因为它体积小,缺少数据缺失。没有进行探索性数据分析(EDA)和特征工程。我只是简单地进行了80-20次训练测试分割,并使用一个预测器来拟合逻辑回归模型。

python数据科学有用吗?数据科学101Python比R更好吗(10)

python数据科学有用吗?数据科学101Python比R更好吗(11)

使用R的glm模型准确率达到95%。不错!

python数据科学有用吗?数据科学101Python比R更好吗(12)

python数据科学有用吗?数据科学101Python比R更好吗(13)

使用Python sklearn的LogisticRegression模型可以实现90%的准确率

使用R stat的glm函数和Python scikit-learn框架的逻辑回归模型,我将两个逻辑回归模型拟合到Iris数据集的随机子集中。我们在模型中只使用了一个预测器,利用萼片长度来预测花的种类。两种型号都达到了90%或更高的准确率,R给出了更好的预测。然而,这不足以证明R具有比Python更好的预测模型。

逻辑回归模型只是你可以使用Python和R构建的众多预测模型中的一个。Python相较于R不同的一个方面是其精心构建的深度学习模块。流行的Python深度学习库,包括Tensorflow,Theano和Keras。这些库有充分的文档记录,我相信Siraj Raval已有数百个关于如何使用它们的Youtube教程。说实话,我宁愿花一个小时在Keras编码dCNNs(深度卷积神经网络),也不愿花费半天时间来弄清楚如何在R中实现它们。Igor Bobriakov已经制作了一个很好的信息图表,描述了对Python、Scala和R中的流行库提交和贡献者的数量。

python数据科学有用吗?数据科学101Python比R更好吗(14)

“用于Python,R和Scala [信息图]的顶级数据科学库的比较”- Igor Bobriako

性能

测量编程语言的速度通常被认为是一项有偏差的任务。每种语言都带有针对特定任务优化的内置插件(例如R如何针对统计分析进行优化)。使用Python和R进行性能测试可以通过多种不同方式完成。我在Python和R中编写了两个简单的脚本来比较Yelp的学术用户数据集的加载时间,该数据集略高于2千兆字节。(https://www.kaggle.com/yelp-dataset/yelp-dataset#yelp_academic_dataset_user.json)

R

python数据科学有用吗?数据科学101Python比R更好吗(15)

Python

python数据科学有用吗?数据科学101Python比R更好吗(16)

R加载json文件的速度几乎比Python快5倍。 众所周知,Python的加载时间比R快,如Brian Ray的测试所示。(http://nbviewer.jupyter.org/gist/brianray/4ce15234e6ac2975b335c8d90a4b6882)让我们看看这两个程序如何处理大型.csv文件,因为.csv是一种常用的数据格式。我们稍微修改上面的代码来加载西雅图书馆清单数据集,这个数据集将近4.5千兆字节。(https://www.kaggle.com/city-of-seattle/seattle-library-collection-inventory/version/15)

R

python数据科学有用吗?数据科学101Python比R更好吗(17)

Python

python数据科学有用吗?数据科学101Python比R更好吗(18)

与Python pandas(用于数据操作和分析的Python编程语言)相比,R加载4.5千兆字节.csv文件的时间几乎是它的两倍。重要的是要知道,虽然pandas主要是用Python编写的,但是库中更关键的部分是用Cython或C编写的。这可能会对加载时间产生隐藏影响,但具体还是取决于数据格式。

现在让我们做一些有趣的事情。拔靴法是一种从群体中随机重新采样的统计方法。之前我已经做了足够的Bootstrap,知道这是一个耗时的过程,因为我们必须反复重新采样数据以进行多次迭代。以下代码分别测试R和Python中引导100 000次重复的运行时:

R

python数据科学有用吗?数据科学101Python比R更好吗(19)

Python

python数据科学有用吗?数据科学101Python比R更好吗(20)

R花了几乎两倍的时间来运行引导程序。鉴于Python通常被视为是一种“慢”编程语言,这是相当令人惊讶的。我慢慢开始后悔在R而不是Python中运行我所有的本科统计学作业。

结论

本文仅讨论了Python和R之间的根本区别。就个人而言,我根据手头的任务在Python和R之间进行了修改。最近,数据科学家一直在努力将Python和R结合使用。在不久的将来,很有可能会出现第三种语言,并最终超越Python和R的受欢迎程度。作为数据科学家和工程师,我们有责任跟上最新技术并保持创新。最后,我强烈建议你阅读Karlijn Willems的“进行数据分析是选择R还是Python?”(https://www.datacamp.com/community/tutorials/r-or-python-for-data-analysis)信息图表为我们在本文中讨论的内容提供了一个很好的视觉摘要,并提供了其他信息,包括工作趋势等额外信息。

猜您喜欢: