R和Python,对抗or融合?
来源商业新知网,原标题:从对抗到融合,教你充分利用R+Python!
我们应该将关注点放在技能上,而不是工具上。
如果你从事数据科学的工作,可能会立即想到两种编程语言:R和Python。
事实上,R和Python本身是很好的工具,但通常被认为是竞争对手。今天推荐的这篇文章将会把两者进行比较,而不是将它们视为两种选择。
如果你在Google搜索栏中输入R vs Python,会立即获得大量有关一方的优势的文章。

产生这种结果的原因之一,是人们根据他们根据对编程语言使用的选择将数据科学领域划分为阵营,一个R营地和一个Python营地。而且这两个阵营往往不能和谐相处,其中的成员都相信他们的语言优于对方。因此,在某种程度上,分歧并不在于工具,而在于——

为什么不同时使用呢?
数据科学中有很少一部分人同时使用Python和R。但事实上,有很多人虽然只用一种编程语言,但他们也想要使用另一个软件的某些功能。例如,R用户有时会想要使用Python本机的面向对象能力,同样,一些Python用户也想用R中的各种统计分布。

上图是Red Monk在2018年第三季度进行的调查结果。这个调查数据来源于Stack Overflow和Github上的语言的流行度,它清楚地表明R和Python普及度都比较高。因此,没有内在的理由说明为什么我们不能在同一个项目上同时使用二者。我们的最终目标应该是更好地分析并获得更好的理解,编程语言的选择不应成为实现这一目标的障碍。

R与Python回顾
让我们来看看这些语言以及它们的优缺点。

Python
自1991年发布以来,Python一直非常受欢迎,并广泛用于数据处理。优点有:
· 面向对象的语言。
· 广泛的用途。
· 有很多扩展(功能)和强大的社区支持。
· 简单,易与理解和学习。
· 在pandas,numpy和scikit-learn这样的软件包上,Python是机器学习活动的绝佳选择。
但是,与R不同,Python没有用于统计计算的专用包。

R
R的第一个版本发布于1995年,从那时起它就成为业界最常用的数据科学工具之一。
· 几乎包含所有可以想到的统计应用程序的安装包。CRAN目前拥有超过10k的包。
· 配备了完备的?可视化库,如ggplot2。
· 能够进行独立分析。
性能良好的R不是最快的语言,并且在处理大型数据集时有时可能会内存过多。

充分利用这两种语言
我们能否同时利用R的统计能力和Python的编程能力?当我们可以轻松地在R或Python脚本中嵌入SQL代码时,为什么不将R和Python混合在一起呢?
基本上有两种方法可以在一个项目中同时使用Python和R.
在Python中使用R
· PypeR
(http://bioinfo.ihb.ac.cn/softwares/PypeR/)
PypeR提供了一种简单的方法,通过管道从Python访问R。PypeR也包含在Python的Package Index中,它提供了一种更方便的安装方式。当Python和R之间不需要频繁的交互式数据传输时,PypeR特别有用。通过管道运行R,Python程序在流程操作系统平台(包括Windows 、GNU Linux和Mac OS)的子流程控制下,可以获得内存控制和可移植性方面的灵活性。

· pyRserve
(https://pypi.org/project/pyRserve/)
pyRserve使用Rserve作为RPC连接网关。通过这种连接,可以在Python中用R设置变量,也可以远程调用R函数。R对象作为Python实现的类的实例公开,在许多情况下R函数作为这些对象的绑定方法。
· rpy2
(https://rpy2.bitbucket.io/)
rpy2在Python进程中运行嵌入式R。它创建了一个框架,可以将Python对象转换为R对象,将它们传递给R函数,并将R输出转换回Python对象。rpy2更常用,并且在积极开发中。

在Python中使用R的一个优点是可以在Python中轻易使用R的强大软件包,如ggplot2,tidyr,dplyr等。举一个例子,让我们看看如何在Python中使用ggplot2进行映射。
· 基本场景

https://rpy2.github.io/doc/latest/html/graphics.html#plot

· 几何

https://rpy2.github.io/doc/latest/html/graphics.html#geometry

在R中使用Python
我们可以使用下面其中一种替代方法在Python中运行R脚本:
· rJython
(https://r-forge.r-project.org/projects/rjython/)
该包通过Jython实现了Python的接口。它旨在让其他包能够与R一起嵌入python代码。
· rPython
(https://cran.r-project.org/web/packages/rPython/index.html)
rPython又是一个允许R调用Python的包。它使得在R中运行Python代码,进行函数调用,分配和检索变量等成为可能。
· SnakeCharmR
(https://github.com/asieira/SnakeCharmR)
SnakeCharmR是rPython的现代版本。它是'rPython'的一个分支,它用了'jsonlite'并且比rPython有很多进步之处。
· PythonInR
(https://bitbucket.org/Floooo/pythoninr/)
PythonInR通过提供从内部与Python交互的函数,使得从R内部访问Python变得非常容易。
· reticulate
(https://github.com/rstudio/reticulate)
网状软件包为Python和R之间的互操作性提供了一套全面的工具。在上述所有选择中,这个是最广泛使用的,更是因为它正在被Rstudio积极开发。Reticulate在R会话中嵌入Python会话,实现无缝、高性能的互操作性。该软件包使你能够将Python代码网格化为R,从而创建一个将两种语言编织在一起的新项目。

网状包提供以下设施:
· 以各种方式从R调用Python,包括R Markdown,获取Python脚本,导入Python模块以及在R会话中以交互方式使用Python。
· R和Python对象之间的转换(例如,R和Pandas数据帧之间,或R矩阵和NumPy数组之间)。
· 灵活地绑定到不同版本的Python,包括虚拟环境和Conda环境。

结论
R和Python都是非常强大的语言,其中任何一种语言都足以执行数据分析任务。但是,对于这两者来说肯定存在一些优缺点,如果我们能够利用两者的优势,一定可以做得更好。无论如何,对二者进行充分的了解能够让我们在更多的环境中进行工作。
R和Python,对抗or融合?的更多相关文章
- Python 调用图像融合API
Python 调用图像融合API 本文记录使用Python,调用腾讯AI开放平台的图像融合API.官网给出的Demo用的是PHP,博主作为Python的粉丝,自然想用它来和『最好的』的语言一较高下,顺 ...
- Data manipulation primitives in R and Python
Data manipulation primitives in R and Python Both R and Python are incredibly good tools to manipula ...
- 做量化模型Matlab、R、Python、F#和C++到底选择哪一个?
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室).是由美国mathworks公司发布的主要面对科学计算.可视化以及交互式程序设计的高科技计算环境.它将数 ...
- R 调用 python
上一篇说了python使用 rpy2 调用 R,这里介绍R如何调用python.R的强项在于统计方面,尤其是专业的统计分析,统计检验以及作图功能十分强大,但是在通用性方面,就远不如Python了,比如 ...
- 四大机器学习编程语言对比:R、Python、MATLAB、Octave
本文作者是一位机器学习工程师,他比较了四种机器学习编程语言(工具):R.Python.MATLAB 和 OCTAVE.作者列出了这些语言(工具)的优缺点,希望对想开始学习它们的人有用. 图源:Pixa ...
- R vs Python,数据分析中谁与争锋?
R和Python两者谁更适合数据分析领域?在某些特定情况下谁会更有优势?还是一个天生在各方面都比另一个更好? 当我们想要选择一种编程语言进行数据分析时,相信大多数人都会想到R和Python——但是从这 ...
- 随机森林入门攻略(内含R、Python代码)
随机森林入门攻略(内含R.Python代码) 简介 近年来,随机森林模型在界内的关注度与受欢迎程度有着显著的提升,这多半归功于它可以快速地被应用到几乎任何的数据科学问题中去,从而使人们能够高效快捷地获 ...
- 让R与Python共舞
转载:http://ices01.sinaapp.com/?p=129 R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现 工具.通俗点说,R是用来做统计和画图的.R拥有自己的脚本 ...
- R、Python、Scala和Java,到底该使用哪一种大数据编程语言?
有一个大数据项目,你知道问题领域(problem domain),也知道使用什么基础设施,甚至可能已决定使用哪种框架来处理所有这些数据,但是有一个决定迟迟未能做出:我该选择哪种语言?(或者可能更有针对 ...
随机推荐
- 使用excel 数据透视表画图
① 打开Excel,选中需要制表的数据,点击“插入”->“数据透视表” ② 出现下列对话框,点击“确定” ③ 再新的“sheet”表内对“数 ...
- mysql binlog抽取某个表的数据
1.先把binlog文件转化为sql --base64-output=decode-rows -v > /var/mydiag.sql 2.抽取某一个表的数据 grep -B0 -A27 -w ...
- python列表生成式
在Python编程中,list列表应用的比较广泛,而列表生成式是一个非常强大但是使用很简单的功能. 比如要生成1到100的数组列表[1,2,3,4......,97,98,99,100],可以使用li ...
- CentOS下puppet安装
简介 Puppet是开源的基于Ruby的系统配置管理工具,puppet是一个C/S结构, 当然,这里的C可以有很多,因此,也可以说是一个星型结构. 所有的puppet客户端同一个服务器端的puppet ...
- 协程gevent
协程,利用线程在等待其他资源期间去执行其他的函数. gevent里面封装了greenlet,greenlet里面封装了yield. from gevent import monkey import g ...
- css 优化
// 注: 以下内容大量借阅自<<Webkit技术内幕>>--朱永盛(14年出版的) , 很多内容可能早已更新 , 因此个人并不能确定论述是否正确.部分摘录内容有删减 , 目录 ...
- redis中key的过期键删除策略
Redis过期键删除策略 Redis key过期的方式有三种: 被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key 主动删除:由于惰性删除策略无法保证冷数据被及时删 ...
- 2018-2019-2 20165312《网络攻防技术》Exp3 免杀原理与实践
2018-2019-2 20165312<网络攻防技术>Exp3 免杀原理与实践 课上知识点总结 1.恶意软件检测机制 基于特征码的检测(需要定期更新病毒库) 启发式恶意软件检测(实时监控 ...
- 亚马逊EC2服务器申请+NODE服务器部署+阿里云域名申请+SSL证书使用
最近,由于项目需要,自己申请了一台亚马逊用于部署网站测试,在使用期间,发现网上没有一篇非常完整的文章讲解从服务器申请到域名解析,SSL证书申请的整个流程.所以自己总结一下,以供大家学习! 一.亚马逊E ...
- golang初识5 - interface
1. interface-new (1) abstract format: type abstractName interface { method_name1 [return_type] } (2) ...