PythonR语言-python和r相遇
前言
??如果你是數據分析領域的新兵,那么你一定很難抉擇——在進行數據分析時,到底應該使用哪個語言,R還是Python?在網絡上,也經常出現諸如“我想學習機器語言,我應該用哪個編程語言”或者“我想快速解決問題,我應該用R還是Python”等這類問題。盡管兩個編程語言目前都是數據分析社區的佼佼者,但是它們仍在為成為數據科學家的首選編程語言而戰斗。
??最近幾年,用R和Python的人越來越多,于是出現了眾多關于用哪個做數據分析最好的爭議。從整體來說,個人認為數據分析需要的是在有限時間內,用最可行的方式拿到最有用的結果。因此,不應該局限于任何單一的編程方法,而應該是各取所長,根據個人特點,問題的形式而靈活選取或者結合。
??Python和R是統計學中兩種最流行的的編程語言,關于R做數據分析的優勢已經不言而喻了,眾多和全面的統計方法使得從方法上來說,R的數據分析能力(模型方法眾多且可視化功能強大)是其它語言不能比擬的。其實爭議最多的也就是出現在其計算性能和全面性上。而Python因為編程靈活方便,語法易于理解而被大家所接受。如何將兩者結合起來,發揮更大的作用,值得探索。
目錄
1.R簡介
2.Python簡介
3.R&Python相遇
1. R簡介
??R(又稱R語言)是一款開源的跨平臺的數值統計和數值圖形化展現工具。通俗點說,R是用來做統計和畫圖的。R擁有自己的腳本語言和大量的統計、圖形庫(得益于開源社區),這讓她看起來既美又實用。與其他同類軟件(如 SPSS)相比,R的特點是純命令行的,這倒也好,我們更應該把注意力放在數據本身,而非統計工具的UI。
??Ross Ihaka和Robert Gentleman于1995年在S語言中創造了開源語言R,目的是專注于提供更好和更人性化的方式做數據分析、統計和圖形模型的語言。起初R主要是在學術和研究使用,但近來企業界發現R也很不錯。這使得中的R成為企業中使用的全球發展最快的統計語言之一。
??R的主要優勢是它有一個龐大的社區,通過郵件列表,用戶貢獻的文檔和一個非?;钴S的堆棧溢出組提供支持。還有CRAN鏡像,一個用戶可以很簡單地創造的一個包含R包的知識庫。這些包有R里面的函數和數據,各地的鏡像都是R網站的備份文件,完全一樣,用戶可以可以選擇離你最近的鏡像訪問最新的技術和功能,而無需從頭開發。
??R雖說有一套自己的語言,還挺完備,但她最專業的還是做統計和畫圖,而像連接數據庫、文本處理、文件操作等這些臟活可不能委屈R來干哪,這些得有其 他語言來負責,我的選擇是咱最熟悉的、做這些臟活最棒的Python。
??如果你是一個有經驗的程序員,你可以不會覺得使用R可以提高效率,但是,你可能會發現學習R經常會遇到瓶頸。幸運的是現在的資源很多。
2. Python簡介
??Python([KK] 英語發音: /'pa?θɑn/, [DJ] 英語發音: /?paiθ?n/),是一種面向對象、直譯式的計算機程序設計語言,也是一種功能強大的通用型語言,已經具有近二十年的發展歷史,成熟且穩定。它包含了一組完善而且容易理解的標準庫,能夠輕松完成很多常見的任務。Python的語法非常簡捷和清晰,與其它計算機程序設計語言最大的不同在于,它采用縮進來定義語句塊。
??Python的官方介紹是:Python是一種簡單易學,功能強大的編程語言,它有高效率的高層數據結構,能簡單而有效地實現面向對象編程。Python簡潔的語法和對動態輸入的支持,再加上解釋性語言的本質,使得它在大多數平臺上的很多領域都是一個理想的腳本語言,特別適用于快速的應用程序開發。
??Python是由Guido van Rossem創建于1991年,并強調效率和代碼的可讀性。希望深入的數據分析或應用統計技術的程序員是Python的主要用戶。
??當你越需要在工程環境中工作,你會越喜歡Python。它是一種靈活的語言,在處理一些新東西上表現很好,并且注重可讀性和簡單性,它的學習曲線是比較低的。
??和R類似,Python也有包,pypi是一個Python包的倉庫,里面有很多別人寫好的Python庫。
??Python也是一個大社區,但它是一個有點比較分散,因為它是一個通用的語言。然而,Python自稱他們在數據科學中更占優勢地位:預期的增長,更新穎的科學數據應用的起源在這里。
3. R&Python相遇
- a).運算速度:
??針對于程序速度的比較,有眾多的測試方法和不同的結果。比如,這個鏈接里的結果(http://attractivechaos.github.io/plb/)。
??綜合其他各個地方的測試結果,其實大體說來從基本運算速度來說,Python > R. 但是要注意,這里所說的運算速度是“基本計算”。也就是說不涉及引用特殊package,不用特殊數據結構和運算方式(比如R中的矢量化運算)的運算。而這樣的運算比較很大程度上取決于基本程序邏輯的速度,比如for循環。R在這點的表現是很差的。基本上會比pyhon慢 3~10倍。
??但是,如果你愿意多花些心思更好的利用矢量化編程進行計算,那么無論從程序的長度來是速度上,都會使R的表現有顯著性提高。我之前的一個帖子做過這樣的比較 (http://bbs.pinggu.org/thread-1042435-1-1.html),具體的內容就不重復了??傊?#xff0c;在這樣的使用方式下,對大部分運算,R的速度是可以和python接近的,當然,用戶也需要花更多地心思去優化程序。
??除此之外,在實際使用的角度來說,數據分析在R中大部分時候使用已有的方法,因此可以使用眾多已經成型的package。如果你使用的package質量很好,通常在大計算量的程序中,作者實際使用的都是更低級更高效的語言(比如C, Fortran)。因此,這些大計算量的步驟實際上是以最高效的方式完成的。如果相應的運算在pyhon里面沒有調用其他低級語言的優化,R就可以在這些方面勝過python。我這里說到的是不需要自己編寫的底層語言調用,在R和python中都可以實現調用別的語言,但是這需要用戶自己編程,從人工角度來講,專業性較高,不在討論范圍。
??整體來說,對于對R使用和編程有一定深入理解的人來說,我不認為R做數據分析的速度會比python差。但是對于簡單粗暴的編程方式,python的確更勝一籌。
- b).全面性:
??從這點來說,我認為Python的確勝過R。無論是對其他語言的調用,和數據源的連接、讀取,對系統的操作,還是正則表達和文字處理,Python都有著明顯優勢。畢竟,python本身是作為一門計算機編程語言出現的,而R本身只是源于統計計算。所以從語言的全面性來說,兩者差異顯著。
??綜上所述,本人認為,對于本地文件直接的數據分析,大部分時候R是比較Python更好的 (速度相近,但分析更專業)。如果涉及多方資源的協調(比如遠程、數據庫、系統、網頁),那么最好的方式是將python和R相結合使用。
??當然,每種語言有自己的學習曲線。因此學習本身也要多花時間,因此如何選取還要依賴于個人而論。
c).優勢對比:
在以下領域中,Python 比R 更有優勢:
◆ 網絡爬蟲和數據抓取:雖然R中的rvest已經簡化了網頁抓取, Python的beautifulsoup和Scrapy更加成熟,并提供更多的功能?!?數據庫連接:雖然R有大量的用于連接到數據庫的選項, Python的sqlachemy只用了一個程序包就提供了所有的數據庫連接功能,并可廣泛用于生產環境。而在以下領域中,R比Python更有優勢:
◆ 統計分析選項:盡管Python的SciPy和 Pandas以及 statsmodels的組合提供了很大的一套統計分析工具,而R是專門圍繞著統計分析應用等創建的,因此提供了更多的相關工具?!?交互式圖像或控制板:bokeh, plotly和intuitics最近都把Python的圖形使用擴展到了Web瀏覽器,但是舉個使用shiny的例子,R中的shiny 控制面板運行速度更快,而且往往需要更少的代碼。
此外,由于數據科學團隊現在擁有一個比較廣泛的技能庫,任何應用程序所選擇的編程語言都可能用到以前的知識和經驗。對于一些應用,特別是原型設計和開發應用,人們使用他們已知的工具則速度會更快。
純文本 的“Air Gap(網閘)”策略
指在完全斷開網絡物理連接的基礎上,實現合法信息的共享。本文中指用純文本文件實現兩種語言間代碼的共享——譯者注。使用純文本作為兩種語言之間的物理隔離,你需要按如下步驟進行。
1.從命令行中重構你的R和Python腳本,并接受命令行參數。2.輸出共享數據到公共文件格式。3.在一種語言中執行另一種語言,按要求傳遞參數。優勢:
★ 最簡單的方法,通常最快★ 可以輕松查看中間輸出結果★ 已有常見文件格式,如: CSV , JSON , YAML的解析器劣勢:
☆ 需要事先商定一個共同的模式或文件格式☆ 如果流程變長的話,難以管理中間輸出結果和路徑☆ 如果數據量變大,本地磁盤讀寫將成為瓶頸
d).R和Python:數據科學行業的表現:
★ 如果你看一下最近的民意調查,在數據分析的編程語言方面,R是明顯的贏家?!?有越來越多的人從研發轉向Python。此外,有越來越多的公司使用這兩種語言來進行組合?!?如果你打算從事數據行業,你用好學會這兩種語言。招聘趨勢顯示這兩個技能的需求日益增加,而工資遠高于平均水平。
4. 總結
??這兩種語言從一開始都具有非常顯著的優缺點。從歷史上看,盡管把兩者分割開來是因為教育背景:統計學家們傾向用R,而程序員則選擇了Python語言。然而,隨著數據科學家的增加,這種區別開始變得模糊起來。數據科學家就是這樣一種人:軟件工程師中最懂統計學,統計學家中最會編程的人。由于這兩種語言各自提供大量獨特的庫資源,對能夠利用這兩種語言的相對優勢的數據科學家的需求正在不斷增長。
轉載于:https://www.cnblogs.com/cloudtj/articles/6362514.html
總結
以上是生活随笔為你收集整理的PythonR语言-python和r相遇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Alibaba代码检查工具插件
- 下一篇: 地外水平/斜面的太阳理论辐照度计算及其p