R语言与Python数据科学:现代进展综述

star2017 1年前 ⋅ 351 阅读

原标题: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


TensorFlow

l 现有接口在R语言中

 

你想要看到这些库中的教程吗?在下面留下评论,让我们知道是哪一个。

 

特别推荐

正如您所看到的,我们的建议是,两种语言都在积极地开发,并且已经有了一套令人印象深刻的工具。这听起来有点陈词滥调,但实际上并没有一个“一刀切”的答案。

如果你刚刚开始,一种简单的选择方式是基于你的舒适区。举个例子,如果你来自一个C.S.或开发人员背景,Python可能会更适合你。另一方面,如果您来自统计/分析师背景,那么R语言语言可能更直观。

在 EliteDataScience 网站,我们确实喜欢R语言,但我们更喜欢使用Python。Python是一种通用的编程语言,它使您可以做任何您想做的事情。

Python也有很棒的Keras扩展包,如上所述,Python使深度学习更容易掌握。

 

如果你想学习Python的数据科学,我们建议检查我们的免费指南:

如何学习Python数据科学(2018)


更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: