您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何讓充分利用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目前擁有超過10k的包。
配備了完備的?可視化庫,如ggplot2。
能夠進行獨立分析。
性能良好的R不是最快的語言,并且在處理大型數據集時有時可能會內存過多。
充分利用這兩種語言
我們能否同時利用R的統計能力和Python的編程能力?當我們可以輕松地在R或Python腳本中嵌入SQL代碼時,為什么不將R和Python混合在一起呢?
基本上有兩種方法可以在一個項目中同時使用Python和R.
在Python中使用R
PypeR
(http://bioinfo.ihb.ac.cn/softwares/PypeR/)
PypeR提供了一種簡單的方法,通過管道從Python訪問R。PypeR也包含在Python的Package Index中,它提供了一種更方便的安裝方式。當Python和R之間不需要頻繁的交互式數據傳輸時,PypeR特別有用。通過管道運行R,Python程序在流程操作系統平臺(包括Windows 、GNU Linux和Mac OS)的子流程控制下,可以獲得內存控制和可移植性方面的靈活性。
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#plot
幾何
https://rpy2.github.io/doc/latest/html/graphics.html#geometry
在R中使用Python
我們可以使用下面其中一種替代方法在Python中運行R腳本:
rJython
(https://r-forge.r-project.org/projects/rjython/)
該包通過Jython實現了Python的接口。它旨在讓其他包能夠與R一起嵌入python代碼。
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)
網狀軟件包為Python和R之間的互操作性提供了一套全面的工具。在上述所有選擇中,這個是最廣泛使用的,更是因為它正在被Rstudio積極開發。Reticulate在R會話中嵌入Python會話,實現無縫、高性能的互操作性。該軟件包使你能夠將Python代碼網格化為R,從而創建一個將兩種語言編織在一起的新項目。
網狀包提供以下設施:
以各種方式從R調用Python,包括R Markdown,獲取Python腳本,導入Python模塊以及在R會話中以交互方式使用Python。
R和Python對象之間的轉換(例如,R和Pandas數據幀之間,或R矩陣和NumPy數組之間)。
靈活地綁定到不同版本的Python,包括虛擬環境和Conda環境。
R和Python都是非常強大的語言,其中任何一種語言都足以執行數據分析任務。但是,對于這兩者來說肯定存在一些優缺點,如果我們能夠利用兩者的優勢,一定可以做得更好。無論如何,對二者進行充分的了解能夠讓我們在更多的環境中進行工作。上述就是小編為大家分享的如何讓充分利用R+Python了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
看完上述內容,你們對如何讓充分利用R+Python有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。