0

0

R和Python谁更好?

little bottle

little bottle

发布时间:2019-04-09 16:06:59

|

3793人浏览过

|

来源于CSDN

转载

如果你从事在数据科学领域,提到编程语言,一定能马上想到 R 语言和 Python语言如果你在 Google 中搜索“R vs Python”,可以看到很多关于二者谁更好的讨论,但其实无论是 R 还是 Python,两个都是很优秀的工具。


640?wx_fmt=png      

出现这种现象的原因之一是,使用者们基于自己所使用的编程语言,将数据科学领域分为几个阵营,包括 R 阵营和 Python 阵营。两个阵营的人都十分相信自己选择的语言远好于对方的。所以在某种程度上,这种分歧并不全部来自于工具本身,也有来自使用者的原因。


为什么不同时使用两种语言?


其实,在数据科学的圈子里,也存在同时使用 Python 和 R 的人,但比例是非常小。另外,有一大部分坚持使用某一种语言的人,同时也希望能掌握另一种语言的某些功能。比如,R 的使用者有时候很需要 Python 的面向对象属性,与此同时,一些 Python 用户也想使用 R 强大的统计分布功能。


640?wx_fmt=png      

上图显示了由 Red Monk 在 2018 年第三季度所进行的调查的结果。此结果基于 Stack Overflow 和 Github 上语言的受欢迎程度,很明显 R 和 Python 的得分都很高。从语言本身来说,并不是限制我们不能在同一项目中使用两者的原因。而我们的最终目标要做更有洞察、有价值的分析,而选择哪种语言不应该成为这一过程中的阻碍。


纵观 R 和 Python


下面我们可以先从几个不同方面对比这两种语言,分别看看它们的优缺点。


640?wx_fmt=png      



自 1991 年发布以来,Python 就极其受欢迎,尤其在数据处理方面被广泛应用。它如此受欢迎有以下几个原因:


  • 面向对象语言

  • 通用性

  • 可扩展性强,强大的社区支持

  • 易于理解和学习

  • Pandas、Numpy 和 Scikit-learn 等包使 Python 成为机器学习的极佳选择


然而,与 R 不同的是,Python 没有用于统计计算的专用包。


640?wx_fmt=png      


  • R

    Copy.ai
    Copy.ai

    Copy.ai 是一个人工智能驱动的文案生成器

    下载


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)移植的灵活度都比较高。


640?wx_fmt=png

     

  • pyRserve


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


  • rpy2


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


640?wx_fmt=png      


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


  • Basic Plot


640?wx_fmt=png      https://rpy2.github.io/doc/latest/html/graphics.html#plot


640?wx_fmt=png    

  

  • Geometry


640?wx_fmt=png     https://rpy2.github.io/doc/latest/html/graphics.html#geometry


640?wx_fmt=png

     

关于 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 语言中,创造了一种将两种语言相结合的新型项目。


640?wx_fmt=png      


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

【推荐课程:Python视频教程

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

758

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

639

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

761

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1265

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

548

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

708

2023.08.11

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 3.2万人学习

Django 教程
Django 教程

共28课时 | 3.2万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号