如果你从事数据科学工作,可能会立即想到两种编程语言:R和Python。事实上,R和Python本身就是很棒的工具,但通常被视为竞争对手。今天推荐的这篇文章将对两者进行比较,而不是将它们视为两个选项。如果您在Google搜索栏中输入RvsPython,您将立即获得大量关于两者优势的文章。造成这种结果的一个原因是,人们根据对编程语言使用方式的选择,将数据科学领域划分为一个阵营,一个是R阵营,一个是Python阵营。而且这两个阵营通常并不和睦相处,每个阵营的成员都认为自己的语言优于对方。所以,在某种程度上,分歧不在于工具,而在于——为什么不两者兼而有之呢?数据科学中很少有人同时使用Python和R。但实际上,有很多人只使用一种编程语言,但他们也想使用另一种软件的某些功能。例如,R用户有时希望使用Python原生的面向对象功能,同样,一些Python用户希望使用R中的各种统计分布。上图是RedMonk在第三季度进行的一项调查结果2018年。这个调查数据来自StackOverflow和Github上的语言热度,很明显可以看出R和Python都比较受欢迎。因此,我们不能在同一个项目中同时使用这两者并没有什么内在原因。我们的最终目标应该是更好地分析和更好地理解,编程语言的选择不应该成为实现这一目标的障碍。Rvs.PythonReview让我们来看看这些语言以及它们的优缺点。Python自1991年发布以来,Python一直非常流行并广泛用于数据处理。优点是:面向对象的语言。用途广泛。有许多扩展(功能)和强大的社区支持。简单,易于理解和学习。借助pandas、numpy和scikit-learn等软件包,Python是机器学习活动的绝佳选择。然而,与R不同的是,Python没有专门用于统计计算的包。RR的第一个版本于1995年发布,从那时起它已成为业界使用最多的数据科学工具之一。几乎所有可以想象到的统计应用程序的软件包。CRAN目前有超过10k个包。配备齐全?可视化库,例如ggplot2。能够独立分析。性能良好的R不是最快的语言,在处理大型数据集时有时会耗尽内存。充分利用两种语言我们能否同时利用R的统计能力和Python的编程能力?当我们可以轻松地将SQL代码嵌入到R或Python脚本中时,为什么不混合使用R和Python?基本上有两种方法可以在一个项目中同时使用Python和R。在Python中使用RPypeR(http://bioinfo.ihb.ac.cn/softwares/PypeR/)PypeR提供了一种简单的方法,通过管道从Python访问R。PypeR也包含在Python的包索引中,这提供了一种更方便的安装方式。当不需要在Python和R之间进行频繁的交互式数据传输时,PypeR尤其有用。通过管道运行R,Python程序在进程操作系统平台(包括Windows、GNULinux和MacOS)上获得了内存控制和子进程控制下的可移植性。pyRserve(https://pypi.org/project/pyRserve/)pyRserve使用Rserve作为RPC连接网关。通过这个连接,可以在Python中用R设置变量,远程调用R函数。R对象作为Python实现类的实例公开,在许多情况下,R函数是这些对象的绑定方法。rpy2(https://rpy2.bitbucket.io/)rpy2在Python进程中运行嵌入式R。它创建了一个框架,可以将Python对象转换为R对象,将它们传递给R函数,并将R输出转换回Python对象。rpy2更常用并且正在积极开发中。在Python中使用R的优点之一是可以在Python中轻松使用R的强大包,如ggplot2、tidyr、dplyr等。作为示例,让我们看看如何在Python中使用ggplot2进行映射。基本场景https://rpy2.github.io/doc/latest/html/graphics.html#plotGeometryhttps://rpy2.github.io/doc/latest/html/graphics.html#geometryinRusingPython我们可以使用以下替代方法之一在Python中运行R脚本:rJython(https://r-forge.r-project.org/projects/rjython/)此包通过Jython实现Python接口。它旨在使其他包能够将python代码与R一起嵌入。rPython(https://cran.r-project.org/web/packages/rPython/index.html)rPython是另一个允许R调用Python的包。它使在R中运行Python代码、进行函数调用、分配和检索变量等成为可能。SnakeCharmR(https://github.com/asieira/SnakeCharmR)SnakeCharmR是rPython的现代版本。它是“rPython”的一个分支,它使用“jsonlite”并且比rPython有许多改进。PythonInR(https://bitbucket.org/Floooo/pythoninr/)PythonInR通过提供从内部与Python交互的函数,使得从R内部访问Python变得非常容易。reticulate(https://github.com/rstudio/reticulate)reticulate包为Python和R之间的互操作性提供了一套全面的工具。在所有上述选项中,这个是使用最广泛的,更重要的是因为它是由Rstudio积极开发。Reticulate在R会话中嵌入了一个Python会话,以实现无缝、高性能的互操作性。这个包使您能够将Python代码融入R,创建一个将两种语言编织在一起的新项目。reticulate包提供以下功能:以各种方式从R调用Python,包括RMarkdown、获取Python脚本、导入Python模块以及在R会话中以交互方式使用Python。R和Python对象之间的转换(例如,R和Pandas数据帧之间,或R矩阵和NumPy数组之间)。灵活绑定到不同版本的Python,包括虚拟和Conda环境。结论R和Python都是非常强大的语言,它们中的任何一个都足以执行数据分析任务。然而,两者肯定各有利弊,如果我们能够利用两者,我们肯定可以做得更好。无论如何,对两者都有很好的理解将使我们能够在更多的环境中工作。
