0
本文作者: AI研習(xí)社-譯站 | 2019-05-09 10:13 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :
From ‘R vs Python’ to ‘R and Python’
作者 | Parul Pandey
翻譯 | 醬番梨、董星、CONFIDANT、穿著涼鞋走天下
校對(duì) | 約翰遜?李加薪 審核 | Pita 整理 | 立魚(yú)王
原文鏈接:
https://towardsdatascience.com/from-r-vs-python-to-r-and-python-aa25db33ce17
我們更應(yīng)該關(guān)注的是技能,而不是工具。
如果你想進(jìn)入數(shù)據(jù)科學(xué)領(lǐng)域,你可能立即會(huì)想到R和Python。然而,我們并不是要以作為兩種選擇來(lái)考慮他們,相反地,我們更多的是去比較他們。R和Pyhton在他們各自的領(lǐng)域里,都是非常完美的工具。盡管如此,他們往往成為各自敵人而爭(zhēng)吵。如果你在谷歌搜索欄里輸入“R vs Python”,你會(huì)看到非常多的關(guān)于他們霸權(quán)之爭(zhēng)。
產(chǎn)生這種觀點(diǎn)的原因之一是,人們根據(jù)所使用的編程語(yǔ)言的選擇將數(shù)據(jù)科學(xué)領(lǐng)域劃分為不同的陣營(yíng)——R陣營(yíng)和Python陣營(yíng),歷史證明了兩個(gè)陣營(yíng)不能和諧相處。兩大陣營(yíng)的成員都堅(jiān)信他們對(duì)語(yǔ)言的選擇優(yōu)于對(duì)方。所以,在某種程度上,分歧不在于工具,而在于使用這些工具的人。
在數(shù)據(jù)科學(xué)領(lǐng)域中有一些人同時(shí)使用Python和R,但是他們的比例很小。另一方面,有很多人只致力于一種編程語(yǔ)言,但他們希望能夠使用對(duì)手的一些功能。例如,R用戶有時(shí)渴望Python固有的面向?qū)ο竽芰?,同樣地,一些Python用戶渴望R中可用的統(tǒng)計(jì)分布的廣泛范圍。
上圖顯示的是Red Monk在2018年第三季度的調(diào)查結(jié)果。這些結(jié)果是基于Stack Overflow和Github上流行的語(yǔ)言得出的,并清楚地表明R和Python的評(píng)分都很高。因此,我們沒(méi)有內(nèi)在的理由不能在同一個(gè)項(xiàng)目上與他們一起工作。我們的最終目標(biāo)應(yīng)該是做更好的分析,得出更好的見(jiàn)解,選擇一種編程語(yǔ)言不應(yīng)該成為實(shí)現(xiàn)這一目標(biāo)的障礙。
讓我們來(lái)看看這兩種語(yǔ)言的各個(gè)方面和他們有哪些優(yōu)勢(shì)與弊端。
pyhton
自發(fā)布于與1991年,pyhton變得十分流行并且它廣泛地用于數(shù)據(jù)處理。以下就是python為什么這么流行的原因:
面對(duì)對(duì)象
通用
有大量的擴(kuò)展庫(kù)和無(wú)與倫比的社區(qū)支持
易于理解和學(xué)習(xí)
由于擁有大量用于科學(xué)計(jì)算和機(jī)器學(xué)習(xí)的包,例如pandas,numpy 和scikit-learn,這使得在機(jī)器學(xué)習(xí)領(lǐng)域中,python變成了一個(gè)完美的選擇.
不幸的是,pyhton并沒(méi)有專(zhuān)門(mén)用于統(tǒng)計(jì)計(jì)算的包。但是,R有.
R
R在1995年發(fā)布。從那時(shí)候開(kāi)始,R在數(shù)據(jù)科學(xué)領(lǐng)域就變成了最有用的工具之一。它具有如下優(yōu)勢(shì)
R幾乎擁有所能想到的用于統(tǒng)計(jì)計(jì)算的包。CRAN目前已經(jīng)擁有超過(guò)10000個(gè)包了。
配備了完美的可視化庫(kù),例如ggplot
能夠進(jìn)行獨(dú)立分析
R雖然性能如此強(qiáng)大,但是它不是最快的語(yǔ)言并且在處理大數(shù)據(jù)集的時(shí)候可能會(huì)消耗大量的內(nèi)存。
我們可以利用R的統(tǒng)計(jì)能力和Python的編程能力嗎?那么,當(dāng)我們可以很容易地在R或Python腳本中嵌入SQL代碼時(shí),為什么不將R和Python混合在一起呢?
基本上有兩種方法可以同時(shí)在一個(gè)項(xiàng)目中使用Python和R。
Python中的R
PypeR
PypeR提供了一種通過(guò)管道從Python訪問(wèn)R的簡(jiǎn)單方法。PypeR還包含在Python的包索引中,這為安裝提供了更方便的方法。當(dāng)不需要在Python和R之間頻繁地交互數(shù)據(jù)傳輸時(shí),PypeR特別有用。通過(guò)管道運(yùn)行R, Python程序在子進(jìn)程控制、內(nèi)存控制和跨流行操作系統(tǒng)平臺(tái)(包括Windows、GNU Linux和Mac OS)的可移植性方面獲得了靈活性。
pyRserve
pyRserve使用Rserve作為RPC連接網(wǎng)關(guān)。通過(guò)這樣的連接,可以在Python的R中設(shè)置變量,也可以遠(yuǎn)程調(diào)用R函數(shù)。R對(duì)象作為python實(shí)現(xiàn)的類(lèi)的實(shí)例公開(kāi),在許多情況下,R函數(shù)作為這些對(duì)象的綁定方法。
rpy2
rpy2在Python進(jìn)程中運(yùn)行嵌入式R。它創(chuàng)建了一個(gè)框架,可以將Python對(duì)象轉(zhuǎn)換為R對(duì)象,將它們傳遞給R函數(shù),并將R輸出轉(zhuǎn)換回Python對(duì)象。rpy2使用得更多,因?yàn)樗且粋€(gè)正在積極開(kāi)發(fā)的。
rpy2在Python進(jìn)程中運(yùn)行嵌入式R。它創(chuàng)建了一個(gè)框架,可以將Python對(duì)象轉(zhuǎn)換為R對(duì)象,將它們傳遞給R函數(shù),并將R輸出轉(zhuǎn)換回Python對(duì)象。由于它是一個(gè)正在積極開(kāi)發(fā)的項(xiàng)目,所以它被使用得更頻繁。
Basic Plot
https://rpy2.github.io/doc/latest/html/graphics.html#plot
Geometry
https://rpy2.github.io/doc/latest/html/graphics.html#geometry
資源
想要更深入地了解rpy2,請(qǐng)參閱以下資源:
rpy2’s Official Documentation
RPy2: Combining the Power of R + Python for Data Science
Accessing R from Python using RPy2
R調(diào)用Python
我們可以選擇以下的一種方法在Python中運(yùn)行R腳本:
rJython
這個(gè)工具包使用Jython實(shí)現(xiàn)到Python的接口。它的目的是使其他包能夠在R中嵌入Python代碼。
rPython
rPython也是一種工具包,使得R語(yǔ)言可以調(diào)用Python。使用rPython,通過(guò)R語(yǔ)言可以運(yùn)行Python代碼,調(diào)用函數(shù),分配和檢索變量等。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
SnakeCharmR
SnakeCharmR是改良版的 rPython。它源于 rPython 的 'jsonlite' 分支,相比于 rPython 有諸多提升。
PythonInR
PythonInR提供了R與Python交互的函數(shù),簡(jiǎn)化了通過(guò)R訪問(wèn)Python的過(guò)程。
reticulate
reticulate包為Python和R之間的協(xié)同操作提供了全套工具。 在以上提供的所有方法中,reticulate被最廣泛使用,更重要的是,它使用Rstudio開(kāi)發(fā)的。Reticulate將Python會(huì)話嵌入到R會(huì)話中,支持無(wú)縫、高性能的交互性能。 該包使您能夠?qū)ython代碼編織到R中,從而創(chuàng)建一種將兩種語(yǔ)言融合在一起的新項(xiàng)目。
reticulate 包提供下列工具:
支持從R中以多種方式調(diào)用Python,包括R標(biāo)記、加載Python腳本、導(dǎo)入Python模塊,以及在R會(huì)話中交互式地使用Python。
實(shí)現(xiàn)R和Python對(duì)象之間的轉(zhuǎn)換 (例如:R和Pandas數(shù)據(jù)幀之間,或者R矩陣和NumPy數(shù)組之間的轉(zhuǎn)換)。
靈活地綁定到不同版本的Python,包括虛擬環(huán)境和Conda環(huán)境。
資源
使用網(wǎng)狀包的一些很好的資源是:
文檔非常健壯,有很多示例和用例可以幫助您入門(mén)(請(qǐng)點(diǎn)擊原文查看文檔)。
https://longhowlam.wordpress.com/2017/04/10/test-driving-python-integration-in-r-using-the-reticulate-package/
SNAKES IN A PACKAGE: COMBINING PYTHON AND R WITH RETICULATE
R和Python都是非常健壯的語(yǔ)言,它們中的任何一種實(shí)際上都足以執(zhí)行數(shù)據(jù)分析任務(wù)。然而,這兩者肯定都有一些高和低的點(diǎn),如果我們能利用兩者的優(yōu)勢(shì),我們可以做得更好。無(wú)論哪種方式,掌握這兩方面的知識(shí)都將使我們更加靈活,從而增加我們能夠在多種環(huán)境中工作的機(jī)會(huì)。
引用:Interfacing R and Python?—?Andrew
http://blog.yhat.com/tutorials/rpy2-combing-the-power-of-r-and-python.html
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?
點(diǎn)擊【放棄 PK,擁抱合作——R 和 Python 能做出什么新花樣?】即可訪問(wèn):
https://ai.yanxishe.com/page/TextTranslation/1618
社長(zhǎng)今日推薦:AI入門(mén)、大數(shù)據(jù)、機(jī)器學(xué)習(xí)免費(fèi)教程
35本世界頂級(jí)原本教程限時(shí)開(kāi)放,這類(lèi)書(shū)單由知名數(shù)據(jù)科學(xué)網(wǎng)站 KDnuggets 的副主編,同時(shí)也是資深的數(shù)據(jù)科學(xué)家、深度學(xué)習(xí)技術(shù)愛(ài)好者的Matthew Mayo推薦,他在機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)領(lǐng)域具有豐富的科研和從業(yè)經(jīng)驗(yàn)。
點(diǎn)擊鏈接即可獲?。?a target="_blank" rel=nofollow>https://ai.yanxishe.com/page/resourceDetail/417
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。