原标题:https://elitedatascience.com/r-vs-python-for-data-science
翻译:布拉格之恋
最近,一些读者一直在问我们关于数据科学的最佳编程语言。很快,我们都想到了R语言和Python,但是要选择这两个巨头中的哪一个呢?
我们觉得现在是解决这个问题的好时机,因为最近Domino数据实验室的首席数据科学家 Eduardo Ariño de la Rubia 对这两种语言的最新进展做了精彩介绍。
我们喜欢 这个视频 的主要原因是它显示了Python和R语言都是如何发展的。这两种语言使数据科学方面变得更全面。
有些人指出了这两种语言的传统缺点 (例如,Python中的数据可视化或R语言中的数据争论),但是由于最近的一些扩展包,比如Python的Altair和R语言的dplyr,这些缺点已经得到了缓解。
本篇文章是对视频中讨论的现代进步的总结。建议上他们的博客观看 完整视频 ,但是你也可以使用这个页面来找到所提到的每个库的链接。
本文的两个主要目标:
1. 对于有经验的数据科学家,我们希望向您介绍一个或两个库,以解决您当前选择编程语言时所面临的恼人或痛苦的问题。
2. 对于新手数据科学家,我们希望能向你介绍与两种编程语言相关的所有的研究成果,这样在你选择编程语言时会更轻松自在。
最后,我们将根据您的背景和目标,为最佳语言提供建议。
本文综述
关于Python的情况
引用Python编程语言的创建者 Guido van Rossum的一句话:“我希望有一个更好的方法。更高级的工具可以让您更清楚地看到软件的结构,这将是非常有价值的。”
为什么Python对数据科学很有用
1.Python于1989年发布。它已经存在很长一段时间了,并且它已经在面向对象编程中进行了开发。
2.IPython/Jupyter Jupyter’s notebook IDE非常棒。这是一个很大的生态系统。例如:Scikit-Learn的页面每月会收到15万16万独立访问者
3.从连续分析中获得了Anaconda,使包管理变得非常容易
4.Pandas 库使其易于处理数据帧和时间序列数据
Python语言在现代数据科学方面的研究进展
1. 收集数据
Feather语言 (快速读写磁盘数据)
l 快速、轻量级的、对于各种文件类型都能输出的、易用的二进制格式
l 尽可能简单地将数据帧从内存中推入和输出
l 无关语言(Python和R语言)
l 高读写性能(较于一般的70 MB/s,CSV文件的读写速度可达到600 MB/s)
l 在流水线中,可以便捷地将数据从一种语言传递到另一种语言中
Ibis (访问数据集的python方法)
l 连接了本地Python环境和远程存储(例如:Hadoop或SQL)
l 可与其他Python集成生态系统
ParaText (最快的方式固定记录和带分隔符数据的磁盘和内存)
l 用c++函数库于读取文本文件在多核机器上并行集成
l 结合Pandas使用:paratext.load_csv_to_pandas(“data.csv”)
l 可使CSV文件的读取速度达到2.5 GB/s
l 安装略微有些困难
Bcolz (解决数据量大于内存问题)
l 压缩列存储
l 可以定义一个Pandas类的数据结构,压缩并将其存储在内存中
l 解决低速内存的性能瓶颈
2. 数据可视化
Altair(类似于Matplotlib 2.0版本,对用户更加友好)
l 有更多的时间理解数据和它的意义
l Altair的API是简便友好,具有一致性的
l 用一小段代码,就可以创建美观而高效的可视化界面
l 使用有条理的DataFrame作为数据源。
l 利用Pandas和SQL的group-by操作,将数据映射到可视属性
l 主要是用来创建静态图
Bokeh(web可重用组件)
l 致力于浏览器演示的交互可视化
l 能够嵌入交互式可视化
l D3.js可以出色的用于Python
l 已有可借鉴的大型模板库
Geoplotlib(交互式地图)
l 可用极简的方式创建地图。
l 可以将名称、维度和精度作为输入列简洁的清单
3. 清洁和转换数据
Baze(将NumPy用于大数据)
l 将一个NumPy或Pandas的语法转换为数据计算系统
l 相同的Python代码,可以跨各种数据存储系统查询数据
l 有利于未来的数据转换和操作
xarray(处理n维数据)
l 核心Pandas数据结构的n维数组(例如,如果数据也有时间组件,同样适用)
l 多维Pandas数据框架
Dask(并行计算)
l 动态任务调度系统
l “大数据”收集,如平行数组、数据框架和列出扩展的交互接口,诸如NumPy、Pandas,或Python迭代器之类的通用接口,以达到大于内存或分布式环境。
4. 建模
Keras(简单的深度学习)
l 为Theano和TensoR语言flow提供了适用的更高级接口
l 我们为初学者编写了一个完整的Keras教程:Keras tutorial for beginners
PyMC3 (概率编程)
l 包含了来自于学术界的实验室中最高端的研究
l 强大的贝叶斯统计模型
关于R语言的情况
“应该有一个接口,可以使用最好的数值算法。” ——John Chambers
John Chambers实际上创造了S语言,这是R语言的前身,但是其精髓与R语言是相通的。
为何R语言在数据科学方面如此出色
l R语言是在1992年创建的,在Python之后,因此能够从Python的课程中学习
l Rcpp使用C++扩展R语言语言变得非常容易
l RStudio是一个成熟并出色的集成开发系统
l CRAN结合了机器学习算法和统计工具。(笔者添加的注释)
l CaR语言et包使得从单一接口中使用不同的算法变得很容易,就像Scikit-LeaR语言n之于Python(笔者添加的注释)
R语言在现代数据科学方面的研究进展
1. 收集数据
FeatheR语言 (快速读写磁盘数据)
l 与Python相同
Haven(与SAS,Stata,SPSS数据交互)
l 读取SAS并将其形成数据框架
Readr(对Read.csv重实现优化)
l Read.csv需要将字符串转化成因子,速度较慢
l 创建了一种数据特性应有的机制,使其在生产方面更强
l 比Read.csv的速度更快
JsonLite(处理JSON数据)
智能地将JSON转换成矩阵或dataframes
2. 数据可视化
ggplot2 (最近有大规模升级)
l 最近有一个非常重要的升级(旧代码将中断)
l 可以解析数据并缩放显示
Htmlwidgets (可重用组件)
l 为R语言带来最好的JavaScript 视觉化
l 有出色的模板库可供借鉴
Leaflet (web交互式地图)
l 优美的JavaScript地图,可在web应用程序中嵌入
Tilegramsr (比例化地图)
l 创建与人口成比例的地图,使得绘制更有趣的地图成为可能,不仅局限基于人口密度标注主要城市
3. 清洁并数据转换
Dplyr (功能极多)
l R语言中应该位居第一的方法
l 有许多设计巧妙的结点
l 整理数据更加人性化
Broom (整理模型)
l 整合模型输出(需要参考模型系数)
l 可整合,扩增,扫描
Tidy_text (整理数据)
l 使用Dplyr ,ggplot2等其他整理工具,可对文本进行最小化
l 通过R语言进行自然语言处理更加容易
4. 建模
MXNet(简单的深度学习)
l 在R语言中构建深层神经网络,操作界面直观
l 略差于Keras
l 现有接口在R语言中
你想要看到这些库中的教程吗?在下面留下评论,让我们知道是哪一个。
特别推荐
正如您所看到的,我们的建议是,两种语言都在积极地开发,并且已经有了一套令人印象深刻的工具。这听起来有点陈词滥调,但实际上并没有一个“一刀切”的答案。
如果你刚刚开始,一种简单的选择方式是基于你的舒适区。举个例子,如果你来自一个C.S.或开发人员背景,Python可能会更适合你。另一方面,如果您来自统计/分析师背景,那么R语言语言可能更直观。
在 EliteDataScience 网站,我们确实喜欢R语言,但我们更喜欢使用Python。Python是一种通用的编程语言,它使您可以做任何您想做的事情。
Python也有很棒的Keras扩展包,如上所述,Python使深度学习更容易掌握。
如果你想学习Python的数据科学,我们建议检查我们的免费指南:
注意:本文归作者所有,未经作者允许,不得转载