假如你处置在数据科学范畴,提到编程言语,一定能立时想到 R 言语和 Python言语假如你在 Google 中搜刮“R vs Python”,可以看到很多关于二者谁更好的议论,但实在无论是 R 照样 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 都是完全且稳固的言语,都足以完成一项数据剖析使命。虽然二者均存在一些各自的优劣势,假如能利用好它们的长处,我们就可以更好地完成使命。总之,同时掌握两种言语会使我们越发天真,从而在多种环境下自若地事情。
【引荐课程:Python视频教程】
以上就是R和Python谁更好?的细致内容,更多请关注ki4网别的相干文章!