r语言和python哪个好?R语言和Python语言在数据科学方面的比较
r语言和python哪个好?R语言和Python语言在数据科学方面的比较对于初级的数据科学家,我们介绍了对两种语言均适用的很棒的应用,所以你可以选择其中任意一种。对于有经验的数据科学家,我们希望在介绍的库中,有那么一两个可以解决你在选择编程语言时遇到的烦恼和痛苦。有人指出这两种语言各自的传统缺陷(例如:用Python进行数据可视化,或者用R进行数据整理),幸而,近年来发行了一些扩展包,比如:用于python的Altair,或是用于R的dplyr,使这些弱点可得到有效缓解。本文是对视频中所讨论的当前进展的总结。我们推荐网站上完整的视频(地址:https://blog.dominodatalab.com/video-huge-debate-r-vs-python-data-science/),本文也对视频中所提到的库加了链接。对于本文,我们有两个主要目标:
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
最近,一些读者向我们询问在数据科学方面最好的编程语言,R和Python立刻浮现在了我的脑海里。那么,如何在这两大巨头之间做出选择呢?
我们最近观看了一个出色的视频,围绕着这两种语言的近期进展,正好可以解决这个问题。该视频来自Domino数据实验室的首席数据科学家——Eduardo Ariño de la Rubias。
我们欣赏这个视频的主要原因在于,它展示了迄今为止Python和R语言的主要进步。对于数据科学,这两种语言都已变得十分合适。
有人指出这两种语言各自的传统缺陷(例如:用Python进行数据可视化,或者用R进行数据整理),幸而,近年来发行了一些扩展包,比如:用于python的Altair,或是用于R的dplyr,使这些弱点可得到有效缓解。
本文是对视频中所讨论的当前进展的总结。我们推荐网站上完整的视频(地址:https://blog.dominodatalab.com/video-huge-debate-r-vs-python-data-science/),本文也对视频中所提到的库加了链接。
对于本文,我们有两个主要目标:
-
对于有经验的数据科学家,我们希望在介绍的库中,有那么一两个可以解决你在选择编程语言时遇到的烦恼和痛苦。
-
对于初级的数据科学家,我们介绍了对两种语言均适用的很棒的应用,所以你可以选择其中任意一种。
最后,在本文的末尾,我们会基于你的背景和目标,推荐最适合你开展学习的语言。首先是视频中的总结:
对于Python的情况
要点:“我希望会有一个更好的方法。高级工具会让你更加清晰地看到看到软件的结构,这蕴含着极大的价值。”- Guido van Rossum
Guido van Rossum是Python编程语言的创始人。
在数据科学方面,Python有哪些优点?
-
python开发于1989,距今已有一段时间,是一种面向对象的编程语言。
-
IPython/Jupyter优秀的记事本式集成开发环境。
-
大型的生态系统。例如,Scikit-Learn每个月会接收15万到16万个独立的访问。
-
Continuum Analytics公司开发的Anaconda使得扩展包的管理非常方便。
-
Pandas库使得对数据框架和时间序列数据的操作非常简单。
Python语言在数据科学方面的进展
1. 收集数据
Feather(快速读写磁盘数据)
-
快速,轻量级,对于各种文件类型都能输出易用的二进制格式.
-
使内存读入读出数据框架尽可能地简单
-
无关语言(Python和R语言均可)
-
高速读写性能(对比于一般的70MB/s,csv文件的读写速度可达到600MB/s)
-
在流水线中,可以便捷地在两种语言之间传递数据
Ibis(以很Python的方式存取数据集)
-
连接了本地Python环境和远程存储(例如Hadoop或者SQL)之间的空白
-
可结合Python其他的生态系统
ParaText(从磁盘获取混合记录和界定数据并存入内存的最快方式)
-
用C 函数库在多核机器上并行地读取文本文件
-
结合Pandas使用: paratextload_csv_to_pandas"data.csv"
-
可使CSV文件的读取速度达到2.5GB/s
-
安装略微有些困难
bcolz(解决数据量大于内存的问题)
-
压缩列存储
-
可定义Pandas类的数据结构 压缩并存储在内存中
-
解决低速内存的性能瓶颈
2.数据可视化
Altair(类似于Matplotlib 2.0 ,对用户更加友好)
-
有更多的时间理解数据和其含义
-
Altair的API是简便友好的,具有一致性
-
用一小段代码,就可以实现赏心悦目、高效的可视化界面
-
使用有条理的DataFrame作为数据源
-
使用Pandas和SQL的group-by操作来整理数据,显示其视觉性的特征
-
主要用来绘制静态图
Bokeh(web可重用组件)
-
致力于浏览器演示的交互可视化
-
可嵌入交互式可视化
-
D3.js可出色地用于Python
-
已有可借鉴的大型模板库
Geoplotlib(交互式地图)
-
可用极简的方式创建地图
-
可将名称,维度,精度作为输入列简洁的清单
3. 清洗和转化数据
Blaze(将NumPy用于大数据)
-
将NumPy或Pandas的句法转化进数据计算系统
-
同样的Python代码,可以跨数据存储系统查询数据
-
利于未来的数据转换和操作
xarray(处理n维数据)
-
核心Pandas数据结构的N维数组 (e.g. 如果数据有时间组成同样适用)
-
多维Pandas数据框架
Dask(并行计算)
-
动态任务调度系统
-
“大数据”收集,如平行数组,数据框架,列出扩展的交互接口,如NumPy Pandas 或大于内存或者分布式环境的Python迭代器等
4. 建模
Keras(简单的深度学习)
-
对Theano和Tensorflow适用的更高级接口
-
我们为Keras的初学者写了一个完整的教程:Keras tutorial for beginners
PyMC3(概率类编程)
-
包含来自学术实验室的高端研究
-
强大的贝叶斯统计模型
想看这些库的教程吗?在下面留言让我们知道是哪一种吧!
对于R的情况
要点: “要用接口调用可获得的优秀数字算法" - John Chambers
John Chambers 创立了S语言--R语言的前身,其精髓与R语言相通
在数据科学方面,R语言的出色之处在于?
-
R语言开发与1992年,晚于Python,从Python中借鉴了经验
-
Rcpp使R语言扩展C 非常容易
-
RStudio是非常成熟并出色的集成开发系统
-
CRAN集合了机器学习算法和数据工具(笔者添加的注解)
-
Caret包可以从一个接口简单地调用不同的算法,就像Scikit-Learn之于Python(笔者添加的注解)
R语言在数据科学方面的进展
1.收集数据
Feather(快速读写磁盘数据)
-
与Python相同
Haven(与SAS Stata SPSS 数据交互)
-
读取 SAS 并使其形成数据框架
Readr(对read.csv重实现优化)
-
read.csv需要将字符串转化成因子,速度较慢
-
创建了一种数据特性应有的机制,使其在生产方面有更强的鲁棒性
-
比read.csv的速度快得多
JSONLite(处理 JSON 数据)
-
巧妙地将JSON转化成矩阵或者dataframe
2.数据可视化
ggplot2(最近有大规模地升级)
-
最近有非常重要的升级 (届时旧的准则将中断)
-
可以解析数据并缩放显示
htmlwidgets(可重用组件)
-
为R语言带来最优秀的JavaScript视觉化
-
有出色的模板库可供借鉴
Leaflet(web交互式地图)
-
优美的JavaScript地图,可嵌入web应用
Tilegramsr(比例化地图)
-
创建人口比例化的地图
-
可以创建更多有趣的地图,不仅局限于基于人口密度标注主要城市。
3. 清洗并转化数据
Dplyr(功能非常多)
-
R语言中应该排在第一位的方法
-
有许多设计巧妙的结点
-
整理数据更加人性化
Broom(整理模型)
-
整合模型输出(需要参考模型系数)
-
可整合 扩增 扫描
Tidy_text(整理数据)
-
类似于dplyr,ggplot2 以及其他整理工具,可对文本进行最小化
-
通过R语言进行自然语言处理更加容易
4. 建模
MXNet(简单的深度学习)
-
用R语言建立深度神经网络,操作界面直观
-
略差于Keras
-
现在有R语言的接口
想看这些库的教程吗?在下面留言让我们知道是哪一种吧!
我们的推荐
正如所见,这两种工具都发展得很好,各有一套出色的工具。虽然有点老掉牙,但是仍然得说:对于如何选择语言的问题,并没有完全标准适用的答案。
假如你刚刚开始学习,有一个简单的办法:根据你的背景来选择。举个例子,假如你有计算机或开发背景,Python会更适合你。另一方面,如果你有数据分析的背景,使用R语言对你来说会更直接一些。
在EliteDataScience网站 我们很喜欢R语言,但通常更偏向于Python。Python是一种通用的编程语言,你可以用它做很多想做的事情。
Python 还有出色的Keras 包,正如上文所提及的,它使深度学习更易于掌握。
英文原文:https://elitedatascience.com/r-vs-python-for-data-science译者:leeafay