0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

R和Python到底谁更好如何将Python与R同时应用在同一个项目

电子工程师 来源:未知 2019-03-17 10:35 次阅读

如果你从事在数据科学领域,提到编程语言,一定能马上想到 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 有超过 10 万个包。

具备极好的可视化工具包,如 ggplot2。

能够进行独立分析。

从性能上来说,R 并不是速度最快的语言,而且在处理大型数据集时,可能对内存消耗较大。

“双剑合璧”

是否可以同时运用 R 超凡的统计能力和 Python 的编程能力呢?我们可以轻松地将 SQL 代码与 R 或 Python 相结合写成一个脚本,为什么不把 R 和 Python 也结合一起使用呢?

将 Python 与 R 同时应用在同一个项目中,有两个基本的手段,接下来就和大家分享这两个方法:

R within Python

PypeR

PypeR 提供了一种可以让 R 连接 Python 的简单途径,即通过管道 (pipe)。PypeR 也存在于 Python 的工具包之中,提供了更便捷的安装方式。当 Python 和 R 之间不需要频繁进行数据传输时,PypeR 非常适用。当我们通过管道运行 R 时,Python 程序在子流程控制、内存控制和跨操作系统(包括 Windows、GNU Linux 和 Mac OS)移植的灵活度都比较高。

pyRserve

pyRserve 使用Rserve作为 RPC 的连接网关,通过这种连接方式,用户可以在 Python 中设置 R 的变量,同时 R 的函数也可以被远程调用。

rpy2

ryp2 可以在 Python 进程中运行内嵌的 R 语言。它创建了一种框架,可以将 Python 对象转化为 R 对象,再把它们传入 R 函数,最后将 R 输出的结果传回给 Python 对象。

在 Python 中调用 R 语言的优点之一是,我们可以在 Python 中方便地使用 R 语言强大的工具包,如 ggplot2、tidyr、dplyr 等。下面我们通过一个简单的例子来看看如何在 Python 中使用 ggplot2。

Basic Plot

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

Geometry

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

关于 rpy2 的资料

rpy2官方文档

https://rpy2.github.io/doc/latest/html/index.html

RPy2: Combining the Power of R + Python for Data Science:

https://community.alteryx.com/t5/Data-Science-Blog/RPy2-Combining-the-Power-of-R-Python-for-Data-Science/ba-p/138432

Accessing R from Python using RPy2:

https://www.r-bloggers.com/accessing-r-from-python-using-rpy2/

Python with R

我们可以通过如下几个工具在 Python 中运行 R 语言的脚本:

rJython

该工具包通过 Jython 部署了连接 Python 的界面,提供了将 Python 与 R 连通的接口

rPython

rPython 也是一个在 R 语言中调用 Python 的工具包,它可以在 R 中运行 Python 代码,进行函数的调用,以及变量的分配和获取等。

SnakeCharmR

SnakeCharmR是改良版的 rPython,它源于 rPython 的 'jsonlite' 分支,相比于 rPython 有诸多提升。

PythonInR

PythonInR 可以让用户非常方便地在 R 语言中使用 Python,提供了可与 Python 进行交互的函数。

reticulate

Reticulate 包提供了一整套可使 Python 与 R 互相操作的工具。在所有上面所提到的工具中,这个使用最为广泛,大部分原因在于它是由 Rstudio 主导开发的。Reticulate 在 R 模块中内嵌了 Python 模块,使两种语言可以无缝且高性能地相互操作。使用该工具包,我们可以把 Python 代码 “编织” 进 R 语言中,创造了一种将两种语言相结合的新型项目。

Reticulate 包提供了以下功能:

提供多种在 R 语言中调用 Python 的方式,包括 R Markdown、导入 Python 脚本、引入 Python 模块,以及在 R 模块中使用 Python。

提供 R 对象和 Python 对象间的相互转换(例如,R 与 Pandas 数据框的转换,或 R 矩阵与 NumPy 数组的转换)。

可与不同版本的 Python 进行灵活的合作,包括虚拟环境和 Conda 环境。

关于 reticulate 工具包的资源:

该文档提供了许多实例来助你入门:

https://rstudio.github.io/reticulate/

使用 reticulate 包,在 R 语言中使用 Python:

https://longhowlam.wordpress.com/2017/04/10/test-driving-python-integration-in-r-using-the-reticulate-package/

工具包中的 “蛇”:用 reticulate 将 Python 与 R 联结:

https://www.mango-solutions.com/blog/snakes-in-a-package-combining-python-and-r-with-reticulate

结论

R 和 Python 都是完整且稳定的语言,都足以完成一项数据分析任务。虽然二者均存在一些各自的优劣势,如果能利用好它们的优点,我们就能更好地完成任务。总之,同时掌握两种语言会使我们更加灵活,从而在多种环境下自如地工作。

原文链接:

https://towardsdatascience.com/from-r-vs-python-to-r-and-python-aa25db33ce17?gi=da69b4bfd654

(本文为AI科技大本营转载文章,转载请微信联系 1092722531)

精彩推荐

4月13-14日,CSDN将在北京主办“Python开发者日(2019)”,汇聚十余位来自阿里巴巴、IBM、英伟达等国内外一线科技公司的Python技术专家,还有数百位来自各行业领域的Python开发者,共同探讨Python在不同场景下的的应用优势和实战经验。即刻扫码抢购早鸟票,限量发售!

推荐荐阅读:

Google又逆天:语音输入离线实时输出文字,仅占80MB!然而……

西工大开源拥挤人群数据集生成工具,大幅提升算法精度 | CVPR 2019

R和Python谁更好?这此让你「鱼与熊掌」兼得

10行Python,搭建一个游戏AI | 视频教程

Node.jsJavaScript 基金会正式合并,JS 喜提新主场

云计算时代运维的出路在哪?

30岁的万维网活不长了! 蒂姆·伯纳斯·李要借去中心化亲手杀死它, 你再也不用担心...

互联网裁员潮亲历者:那些阵痛、挣扎与去向

没有一个人,能躲过程序员的诱惑!

❤点击“阅读原文”,查看历史精彩文章。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    738

    浏览量

    43461
  • 数据处理
    +关注

    关注

    0

    文章

    507

    浏览量

    28247
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83465

原文标题:R和Python谁更好?这次让你「鱼与熊掌」兼得

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【WRTnode2R试用体验】安装python

    继《初识WRTnode2R》之后,应项目需求,安装pythonpython的安装分为3步。第步,在make menuconfig时选中核
    发表于 11-09 20:22

    Python编程语言可以应用在哪些方面?

    万行以上的项目,而且能够很好的把网游项目的规模控制在10万行代码以内。10. 桌面软件Python在图形界面开发上很强大,可以用tkinter/PyQT框架开发各种桌面软件!以上是Python
    发表于 02-05 17:50

    五大Python Web框架详解

    Python门优雅的编程语言,被广泛应用在Web开发、游戏开发、人工智能、云计算开发、大数据开发、数据分析、科学运算、爬虫、自动化运维、自动化测试等领域,Python在各领域的应用
    发表于 02-06 17:17

    Python中is与==判断的区别

    Python代码。首先,我们创建新的列表对象并将其命名为a,然后定义另一个变量b指向同一
    发表于 06-20 17:11

    快速学习Python的技巧

    中的内联代码单独编译,但它在利用C语言所能提供的效率的同时,也让所有的代码都在同一个地方。四、交叉编译应用程序有趣的交叉编译器,Nuitka,可以将你的
    发表于 07-27 14:58

    si4463的发送和接收r能不能使用同一个频点?

    si4463的发送和接收r能不能使用同一个频点,怎么用?
    发表于 09-14 10:07

    请问如何将Python程序交叉编译至Arm运行?

    环境是x86的cpu,运行环境的arm的cpu,则移植时需要交叉编译。请问如何将x86系统上开发的软件移植过去呢?如何进行交叉编译呢?(网上有人说Python和用到的第三方库全部在Arm-Linux
    发表于 04-07 11:46

    如何将多个LabVIEW生成的exe打包进同一个安装包??

    我用labview写了软件,生成了多个版本的exe,如何将多个exe打包到同一个安装包中。在安装时能选择安装。不同的版本环境也不样,在安装时只安装对应的环境。
    发表于 11-14 10:50

    如何将信号映射到同一个引脚?

    。对于第二核心,我输入/输出连接到外部端口。在ucf文件中,我第二核心的网络添加到与第一个核心网络相同的引脚位置。这是我的问题。我不
    发表于 04-06 07:22

    我没学过编程,能否学会Python

    差异极大,最后都得“翻译”成CPU可以执行的机器指令。而不同的编程语言,干同一个活,编写的代码量,差距也很大。比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能
    发表于 07-14 14:49

    我没学过编程,能否学会Python

    差异极大,最后都得“翻译”成CPU可以执行的机器指令。而不同的编程语言,干同一个活,编写的代码量,差距也很大。比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能
    发表于 07-25 10:21

    Python 读取文件的6种方式

    的 open 函数import iofile=io.open("README.md")file.read()经朋友提醒,我才发现 io.open 和 open 是同一个函数
    发表于 04-11 15:30

    为什么在数据科学领域Python比R更好

    经常有读者问我们,在数据科学领域里,到底是该选 Python 呢,还是选 R 更好?诚然,对于数据科学家来说,R 和 Python 都很重要。但是对于一个新人数据科学家来说,又该如何取
    的头像 发表于 04-18 10:49 3301次阅读

    Python项目开发实战

    Python项目开发实战
    发表于 06-13 14:51 2次下载

    Python如何将Python脚本打包成exe可执行文件

    Python实用技巧】如何将Python脚本打包成exe可执行文件?
    的头像 发表于 08-18 12:40 1.8w次阅读
    【<b class='flag-5'>Python</b>】<b class='flag-5'>如何将</b><b class='flag-5'>Python</b>脚本打包成exe可执行文件