社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

CDA数据分析师 • 5 年前 • 254 次点击  

作者 | Parul Pandey

译者 | 大鱼  责编 | Jane

本文转自 Python大本营(公众号id:pythonnews)


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





CDA 课程咨询丨赵老师

联系电话:13381275813
扫描二维码



更多精彩文章

· 免费!10本必读的机器学习书籍(附下载)

· 收藏 | 这可能是史上最全的 Python 算法集!

· 第九届CDA认证考试,首位 Level 3 数据科学家诞生!!

· 猫眼5万条评论告诉你《飞驰人生》值不值得看?!

· 盘点 | 那些奋斗在数据科学和人工智能领域的“女神”们

· Python程序员!变身!这有一张最高效成长路线图(附资源)


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/29873
 
254 次点击