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

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

本文来源Python大本营

本文版权归原作者所有,内容为作者个人观点,转载目的在于传递更多信息,如涉及作品内容、版权等问题,可联系本站删除,谢谢。

更多交流咨询:18080942131 (同微信 加好友备注:搜狐)。返回搜狐,查看更多

责任编辑:

python编程与t5哪个难_R和Python谁更好?这次让你「鱼与熊掌」兼得相关推荐

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

    作者 | Parul Pandey 译者 | 大鱼 责编 | Jane 出品 | Python大本营(公众号id:pythonnews) 如果你从事在数据科学领域,提到编程语言,一定能马上想到 R 语 ...

  2. python编程第四版_清华编程教授强力推荐《Python编程》,指导你如何学习python

    Python编程真的那么容易吗?仅仅是看理论就可以学以致用吗? 今天我给你介绍的这本书,也许会让你开始改变这种想法,因为这本书上的练习和案例以及指导本身就足够学好Python了. 清华编程教授强力推荐 ...

  3. 如何高效学python编程_如何高效自学编程?天下没有难学的python

    这是一个不一样的python教程,我们的特点是教会如何高效地自学,化被动学习为主动学习 在过往的经验中发现,很多学习编程的同学,都有过 从入门到放弃 的体验,我也曾是其中一员.后来经过深入分析,发现了 ...

  4. python编程零基础-如何零基础入门Python编程?

    Python目前已经成为最受欢迎的编程语言之一,吸引了一大批粉丝,但是很多人在要跨入的时候犹豫了,原因竟然是觉得零基础学习Python太难了,真的是这样吗?零基础入门Python编程学习有什么好的技巧 ...

  5. python编程好学吗-零基础可以学会python吗?python好学吗?

    一.编程零基础可以学会python吗? 首先我要说Python是一种解释型语言:这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. Python是交互式语言:这意味着,您可以在一个Py ...

  6. python编程100例体育课排队-学点Python,让你的求职简历更有含金量!

    原标题:学点Python,让你的求职简历更有含金量! 疫情爆发的前两个月,中国约有 500万人因此失业. 疫情里最好笑的心酸莫过于 "因为疫情无法工作却发现公司的事儿,有我没我都成.&quo ...

  7. 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  8. python编程从入门到精通pdf-码哥—-Python从入门到精通(全60集),资源教程下载...

    课程名称 码哥--python从入门到精通(全60集),资源教程下载 课程目录 1Python编程语言历史及特性 2Python编程语言初接触 3Python程序文件结构 4准备Python编程环境 ...

  9. python编程软件例子-软件开发|10 个 Python 图像编辑工具

    以下提到的这些 Python 工具在编辑图像.操作图像底层数据方面都提供了简单直接的方法. 当今的世界充满了数据,而图像数据就是其中很重要的一部分.但只有经过处理和分析,提高图像的质量,从中提取出有效 ...

最新文章

  1. R语言使用unzip函数解压压缩文件(Extract or List Zip Archives)
  2. php柱形图上显示数字怎么改回来,sigmaplot可以在柱状图上显示数值
  3. android sco通信,android – startBluetoothSco()在ICS上抛出安全异常(BROADCAST_STICKY)
  4. python旅游推荐系统_用python写一个简单的推荐系统
  5. hdu1526 二分匹配+ floyd
  6. 6.1团队第二阶段冲刺(七)
  7. 前端学习(3030):vue+element今日头条管理-顶部导航栏布局
  8. sendBroadcast与sendStickyBroadcast的区别
  9. python中下拉菜单大小_请问各位大神如何将下拉菜单的文字设定成一个值?
  10. ulipad python配置
  11. 固态硬盘用软件测试温度高,硬盘温度过高的原因,固态硬盘温度过高-
  12. linux 版的 wps 缺少字体的解决办法
  13. 怎么用python批量发送邮件_Python实现批量发邮件
  14. html设置尖角,CSS为div添加尖角样式
  15. QT画贝塞尔曲线 和 曲线与斜率、一阶导数 、二阶导数的关系
  16. php pear pecl 区别,pecl 简单介绍
  17. 一步步做一个Google 网页
  18. 企业如何选择一个好的网站设计公司?
  19. STM32_RS485通信异常
  20. sql语句练习题或面试题

热门文章

  1. perceptivepixel PPI 55触摸屏初步测试结果
  2. 行车助理(杭州市区) 怎么用
  3. 编写一个shell脚本,可以在屏幕上打印出笛卡尔曲线
  4. 网线连接内网,无线连接外网
  5. 嵌入式软件开发的难点
  6. 基于MATLAB实现WSN(无线传感器网络)的LEACH(低能耗自适应集群层次结构)(Matlab代码实现)
  7. 我快 30 了,前途在哪里?
  8. 【Grasshopper基础14】创建可在画布上自由传递的自定义类型数据(下)—— 电池与自定义IGH_Goo的交互
  9. Centos7.5搭建本地Yum源【2022最新--保姆级部署】
  10. MIR DATABANK工业机器人每周要闻 ——2019年10月28日