发布时间:2023-07-29 09:30
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
已有可借鉴的大型模板库可用极简的方式创建地图
可将名称,维度,精度作为输入列简洁的清单
3. 清洗和转化数据
Blaze(将NumPy用于大数据)将NumPy或Pandas的句法转化进数据计算系统
同样的Python代码,可以跨数据存储系统查询数据
利于未来的数据转换和操作
xarray(处理n维数据)核心Pandas数据结构的N维数组 (e.g. 如果数据有时间组成同样适用)
多维Pandas数据框架
Dask(并行计算)动态任务调度系统
“大数据”收集,如平行数组,数据框架,列出扩展的交互接口,如NumPy, Pandas, 或大于内存或者分布式环境的Python迭代器等
4. 建模
Keras(简单的深度学习)对Theano和Tensorflow适用的更高级接口
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(最近有大规模地升级)最近有非常重要的升级 (届时旧的准则将中断)
可以解析数据并缩放显示为R语言带来最优秀的JavaScript视觉化
有出色的模板库可供借鉴
Leaflet(web交互式地图)优美的JavaScript地图,可嵌入web应用创建人口比例化的地图
可以创建更多有趣的地图,不仅局限于基于人口密度标注主要城市。
3. 清洗并转化数据
Dplyr (功能非常多)R语言中应该排在第一位的方法
有许多设计巧妙的结点
整理数据更加人性化
Broom (整理模型)整合模型输出(需要参考模型系数)
可整合, 扩增, 扫描类似于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
两个运放制作加法器_运放基础第10讲,加法器、减法器、积分器、微分器、仪表放大器...
【服务器数据恢复】某品牌ProLiant服务器raid瘫痪数据库文件损坏的数据恢复
清华教授沈向洋:创新就要做到极致,用开源的方式培养未来的工程师
【论文阅读】[meta learning]cross-domain few-shot classification via learned feature-wise transformation.
使用中间件mycat实现MySQL读写分离(初步,navicat测试可行)
Elasticsearch:使用 Elasticsearch Java client 8.0 来连接带有 HTTPS 的集群
力扣算法题--704. 二分查找、278. 第一个错误的版本、35. 搜索插入位置