放棄PK,擁抱合作——R和 Python 能做出什麼新花樣?

2020-11-22 雷鋒網

本文為 AI 研習社編譯的技術博客,原標題 :

From 『R vs Python』 to 『R and Python』

作者 | Parul Pandey

翻譯 | 醬番梨、董星、CONFIDANT、穿著涼鞋走天下 

校對 | 詹森•李加薪        審核 | Pita       整理 | 立魚王

原文連結:

https://towardsdatascience.com/from-r-vs-python-to-r-and-python-aa25db33ce17

我們更應該關注的是技能,而不是工具。

如果你想進入數據科學領域,你可能立即會想到R和Python。然而,我們並不是要以作為兩種選擇來考慮他們,相反地,我們更多的是去比較他們。R和Pyhton在他們各自的領域裡,都是非常完美的工具。儘管如此,他們往往成為各自敵人而爭吵。如果你在谷歌搜索欄裡輸入「R vs Python」,你會看到非常多的關於他們霸權之爭。

產生這種觀點的原因之一是,人們根據所使用的程式語言的選擇將數據科學領域劃分為不同的陣營——R陣營和Python陣營,歷史證明了兩個陣營不能和諧相處。兩大陣營的成員都堅信他們對語言的選擇優於對方。所以,在某種程度上,分歧不在於工具,而在於使用這些工具的人。

在數據科學領域中有一些人同時使用Python和R,但是他們的比例很小。另一方面,有很多人只致力於一種程式語言,但他們希望能夠使用對手的一些功能。例如,R用戶有時渴望Python固有的面向對象能力,同樣地,一些Python用戶渴望R中可用的統計分布的廣泛範圍。

上圖顯示的是Red Monk在2018年第三季度的調查結果。這些結果是基於Stack Overflow和Github上流行的語言得出的,並清楚地表明R和Python的評分都很高。因此,我們沒有內在的理由不能在同一個項目上與他們一起工作。我們的最終目標應該是做更好的分析,得出更好的見解,選擇一種程式語言不應該成為實現這一目標的障礙。

讓我們來看看這兩種語言的各個方面和他們有哪些優勢與弊端。


pyhton

自發布於與1991年,pyhton變得十分流行並且它廣泛地用於數據處理。以下就是python為什麼這麼流行的原因:

 不幸的是,pyhton並沒有專門用於統計計算的包。但是,R有.


R

R在1995年發布。從那時候開始,R在數據科學領域就變成了最有用的工具之一。它具有如下優勢

R雖然性能如此強大,但是它不是最快的語言並且在處理大數據集的時候可能會消耗大量的內存。

我們可以利用R的統計能力和Python的編程能力嗎?那麼,當我們可以很容易地在R或Python腳本中嵌入SQL代碼時,為什麼不將R和Python混合在一起呢?

基本上有兩種方法可以同時在一個項目中使用Python和R。

Python中的R

PypeR提供了一種通過管道從Python訪問R的簡單方法。PypeR還包含在Python的包索引中,這為安裝提供了更方便的方法。當不需要在Python和R之間頻繁地交互數據傳輸時,PypeR特別有用。通過管道運行R, Python程序在子進程控制、內存控制和跨流行作業系統平臺(包括Windows、GNU Linux和Mac OS)的可移植性方面獲得了靈活性。

pyRserve使用Rserve作為RPC連接網關。通過這樣的連接,可以在Python的R中設置變量,也可以遠程調用R函數。R對象作為python實現的類的實例公開,在許多情況下,R函數作為這些對象的綁定方法。

rpy2在Python進程中運行嵌入式R。它創建了一個框架,可以將Python對象轉換為R對象,將它們傳遞給R函數,並將R輸出轉換回Python對象。rpy2使用得更多,因為它是一個正在積極開發的。

rpy2在Python進程中運行嵌入式R。它創建了一個框架,可以將Python對象轉換為R對象,將它們傳遞給R函數,並將R輸出轉換回Python對象。由於它是一個正在積極開發的項目,所以它被使用得更頻繁。

https://rpy2.github.io/doc/latest/html/graphics.html#plot


https://rpy2.github.io/doc/latest/html/graphics.html#geometry

資源

想要更深入地了解rpy2,請參閱以下資源:

  • rpy2’s Official Documentation

  • RPy2: Combining the Power of R + Python for Data Science

  • Accessing R from Python using RPy2

R調用Python

我們可以選擇以下的一種方法在Python中運行R腳本:

這個工具包使用Jython實現到Python的接口。它的目的是使其他包能夠在R中嵌入Python代碼。

rPython也是一種工具包,使得R語言可以調用Python。使用rPython,通過R語言可以運行Python代碼,調用函數,分配和檢索變量等。雷鋒網(公眾號:雷鋒網)雷鋒網雷鋒網

SnakeCharmR是改良版的 rPython。它源於 rPython 的 'jsonlite' 分支,相比於 rPython 有諸多提升。

PythonInR提供了R與Python交互的函數,簡化了通過R訪問Python的過程。

reticulate包為Python和R之間的協同操作提供了全套工具。  在以上提供的所有方法中,reticulate被最廣泛使用,更重要的是,它使用Rstudio開發的。Reticulate將Python會話嵌入到R會話中,支持無縫、高性能的交互性能。 該包使您能夠將Python代碼編織到R中,從而創建一種將兩種語言融合在一起的新項目。 

reticulate 包提供下列工具:

  • 支持從R中以多種方式調用Python,包括R標記、加載Python腳本、導入Python模塊,以及在R會話中交互式地使用Python。

  • 實現R和Python對象之間的轉換 (例如:R和Pandas數據幀之間,或者R矩陣和NumPy數組之間的轉換)。

  • 靈活地綁定到不同版本的Python,包括虛擬環境和Conda環境。

資源

使用網狀包的一些很好的資源是:

  • 文檔非常健壯,有很多示例和用例可以幫助您入門(請點擊原文查看文檔)。

  • 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都是非常健壯的語言,它們中的任何一種實際上都足以執行數據分析任務。然而,這兩者肯定都有一些高和低的點,如果我們能利用兩者的優勢,我們可以做得更好。無論哪種方式,掌握這兩方面的知識都將使我們更加靈活,從而增加我們能夠在多種環境中工作的機會。

引用:Interfacing R and Python — Andrew 

http://blog.yhat.com/tutorials/rpy2-combing-the-power-of-r-and-python.html  

想要繼續查看該篇文章相關連結和參考文獻?

點擊放棄 PK,擁抱合作——R 和 Python 能做出什麼新花樣?】即可訪問:

https://ai.yanxishe.com/page/TextTranslation/1618

社長今日推薦:AI入門、大數據、機器學習免費教程

35本世界頂級原本教程限時開放,這類書單由知名數據科學網站 KDnuggets 的副主編,同時也是資深的數據科學家、深度學習技術愛好者的Matthew Mayo推薦,他在機器學習和數據科學領域具有豐富的科研和從業經驗。

點擊連結即可獲取:https://ai.yanxishe.com/page/resourceDetail/417


雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 科悟學院介紹什麼是Python、python能做什麼?
    2020年什麼是另一個風口?哪些人能再一次的崛起?這是很多人想知道的,今天小編就給你揭秘一個行業——Python(AI人工智慧),有人會問python到底是什麼?能做什麼?下面科悟學院介紹什麼是python和python能做什麼,希望對於正在學習的你有所幫助。
  • 用R也可以跑Python了
    」)第二步:在conda環境下安裝「r-reticulate」和「numpy」;conda_install(「r-reticulate」,「numpy」)通過使用repl_python()函數,可以使Python和R交互。
  • 代碼詳解:Python虛擬環境的原理及使用
    全文共5308字,預計學習時長20分鐘或更長依附之門:「放棄進入這裡的所有希望。」插圖:Gustave DoréPython的虛擬環境極大地方便了人們的生活。本指南先介紹虛擬環境的基礎知識以及使用方法,然後再深入介紹虛擬環境背後的工作原理。
  • 從0開始學python-6.2 用python讀寫文件
    上節課我們學習了什麼文件系統,文件樹的組成結構是什麼樣的。我們還學習了用python來查找、重命名一個文件。這節課,我們一起學習一下怎麼用python操作一個文件的內容。我們來看看用python怎麼做這些事情。打開文件在對文件內容操作之前,我們首先要打開文件。我們可以使用open函數打開文件,看代碼:file = open('./hello.py', 'r')open函數需要兩個參數,第一個參數是文件位置,就是我們要打開哪個文件。第二個參數是打開模式。什麼是打開模式呢?
  • 學習Python正則表達式
    李丹剛在一家經銷店找到了新工作,他的工作是給那些在評論頁留下電話號碼的客戶打電話。然而,讓李丹煩惱的是,評論是以自由文本的形式展現,電話號碼就在這些評論中。如何不需要一個接一個地複製和粘貼,就可以輕鬆地找到這些電話號碼?Python中的正則表達式(re)就可以解決這個問題!正則表達式正則表達式是一個具有特殊字符的序列。
  • python是什麼,python能幹什麼,為什麼大家都學pyhon一起來看看吧
    相信大家如果經常上網,就會看到各種學python的教程,那麼python究竟是什麼意思,學會了可以用來幹什麼那,我們一起來看一下吧。首先大家要明白python是一種跨平臺的程式語言,python編程的特點易讀、易維護,所以被大量的用戶所歡迎,python最大的特點是開發速度快,因為編程開發效率一直很低,python有很多第三方庫,所以開發起來事半功倍,很流行的一句話,人生苦短,我學python,可謂是把python特點完整的詮釋出來。
  • Python和人工智慧有什麼關係?Python 和人工智慧的區別是什麼?
    人工智慧是一個大的範疇,包括很多方面的應用,比如機器學習,在機器學習中的回歸算法,它們是通過統計分析所有數據來建立多因式,然後求解式子,而在這個過程中程式語言起到的作用是清洗數據、處理數據、建立關係求解結果的作用,python適用於數據清洗且學習成本低,所以在一定程度上,好一部分人傾向於將python應用於人工智慧應用領域。
  • 我們能用Python做什麼?學Python有前途嗎?
    我們能用Python做什麼?目前流行的大數據分析、數據科學、機器學習等行業,Python長期穩固第一陣營,甚至就是第一語言。不管從哪個方面來考慮,都應該選擇 Python。
  • 新艾美 新未來—艾美創投擁抱區塊鏈聯盟合作新聞發布會獲圓滿成功
    2018年7月3日,在由紐西蘭L&Z MKC主辦的「新艾美 新未來——暨艾美擁抱區塊鏈聯盟合作新聞發布會」上,艾美創投宣布將與紐西蘭L&Z MKC,以及其在中國首個應用「么妹娛樂」平臺展開戰略合作,打造「艾美超級雙生態系統」。
  • Python能幹什麼?為什麼會這麼火
    那麼Python能幹什麼?為什麼會這麼火?那麼Python能幹什麼呢?1.網站後端程式設計師:使用它單間網站,後臺服務比較容易維護。對於新手或者初學者來說,Python是非常容易學習和使用的,最容易學習的程式語言之一。部分原因是因為它簡化了語法,更加貼近於自然語言,可以讓Python代碼更加快速的執行。
  • Python2 倒計時,還不快來掌握 Python3 酷炫的新特性?|原力計劃
    下面我們對比同一案例的新舊兩個版本Python的實現:from glob import globfile_contents = []for filename in glob('**/*.py', recursive=True):with open(filename) as python_file: file_contents.append(python_file.read
  • python由圓半徑計算圓的周長和面積
    要計算圓的周長和面積,自然而然就要用到圓周率π,在我國,祖衝之在劉徽開創的探索圓周率的精確方法的基礎上,首次將「圓周率」精算到小數第七位,即在3.1415926和3.1415927之間,他提出的「祖率」對數學的研究有重大貢獻。直到16世紀,阿拉伯數學家阿爾·卡西才打破了這一紀錄。
  • 使用Python和Tesseract來識別圖形驗證碼
    很多時候驗證碼明明很簡單(對於非網際網路企業,或者企業內網中的應用來說特別如此),但因為沒有趁手的識別庫,也只能苦哈哈地進行人肉識別,或者無奈地放棄任務。在這裡,我分享一下自己使用Python和開源的tesseract OCR引擎做驗證碼識別的經驗,並提供相關的原始碼和示例供大家借鑑。
  • 初識python
    2,python歷史。宏觀上:python2 與 python3 區別:python2 源碼不標準,混亂,重複代碼太多,python3 統一 標準,去除重複代碼。3,python的環境。編譯型:一次性將所有程序編譯成二進位文件。缺點:開發效率低,不能跨平臺。優點:運行速度快。
  • 解決Python讀取文件時出現UnicodeDecodeError
    今天學習python時,讀取一個txt文檔,然後打開後輸出文件,提示UnicodeDecodeError: 'gbk' codec can't decode bytepython代碼def print_file(fname): f = open(fname,'r'
  • 不懂NumPy 算什麼 Python 程式設計師?|CSDN 博文精選
    numpy 數組和 python 數組之間有幾個重要的區別:numpy 數組一旦創建,其元素數量就不能再改變了。增刪 ndarray 元素的操作,意味著創建一個新數組並刪除原來的數組。python 數組的元素則可以動態增減。numpy 數組中的元素都需要具有相同的數據類型,因此在內存中的大小相同。python 數組則無此要求。
  • 編程界新晉「網紅」Python到底是什麼?學Python真的有用嗎?
    那麼,什麼叫通過「數位化方式」完成辦公室任務呢?舉例:「文件批量重命名」,我們來拆解一下手動完成這個任務需要的步驟。當你的工作被新的技術一步一步取代,而你卻對它一無所知。等到你的工作完全被新的技術以及懂技術的人取代之時,你會發現一切已經來不及。英國金融時報的一篇文章預測了2025年幾大新興科技對經濟的影響。其中自動化辦公以7萬億的經濟影響排名第二,僅次於行動網路的11萬億。
  • 從零開始學 Python 之輸入與輸出
    還有類似的方法, 如 ljust() 和 center()。 這些方法並不會寫任何東西, 它們僅僅返回新的字符串。s' (使用 str()) 和 '!r' (使用 repr()) 可以用於在格式化某個值之前對其進行轉化:可選項 ':' 和格式標識符可以跟著欄位名。 這就允許對值進行更好的格式化。 下面的例子將 Pi 保留到小數點後三位:在 ':' 後傳入一個整數, 可以保證該域至少有這麼多的寬度。 用於美化表格時很有用。
  • 定製韓劇《花樣排球》啟動 宋再臨黃勝妍加盟
    繼搜狐視頻與金鐘學影視製片公司共同研發製作的首部合作研發定製韓劇《高品格單戀》啟動之後,原班團隊打造的愛情喜劇《花樣排球》也於近日敲定男女主演,該劇將由宋再臨、黃勝妍兩位韓星聯袂主演,詮釋一段排球選手和排球女神之間的熱血愛情故事!