1. 程式人生 > >R和python資料分析方面的對比爭論

R和python資料分析方面的對比爭論

  面對大量的資料進行分析時,選擇一款好的工具或者方法至關重要,節約時間的同時,還能讓資料結構清晰明瞭,在最近幾年,用R, Python的人越來越多,於是出現了眾多關於用哪個做資料分析最好的爭議。

  在這裡分享一下關於R和python資料分析方面的觀點:

  首先,從整體來說,認為資料分析需要的是在有限時間內,用最可行的方式拿到最有用的結果。因此,不應該侷限於任何單一的程式設計方法,而應該是各取所長,根據個人特點,問題的形式而靈活選取或者結合。

  其實,關於R做資料分析的優勢已經不言而喻了,眾多和全面的統計方法使得從方法上來說,R的資料分析能力是其他幾個不能比擬的。其實爭議最多的也就是出現在其計算效能和全面性上。

  1.運算速度:

  針對於程式速度的比較,有眾多的測試方法和不同的結果。

  綜合其他各個地方的測試結果,其實大體說來從基本運算速度來說,Python R. 但是要注意,這裡所說的運算速度是“基本計算”。也就是說不涉及引用特殊package,不用特殊資料結構和運算方式(比如R中的向量化運算)的運算。而這樣的運算比較很大程度上取決於基本程式邏輯的速度,比如for迴圈。R在這點的表現是很差的。基本上會比pyhon慢 3~10倍。

  但是,如果你願意多花些心思更好的利用向量化程式設計進行計算,那麼無論從程式的長度來是速度上,都會使R的表現有顯著性提高。總之,在這樣的使用方式下,對大部分運算,R的速度是可以和python接近的,當然,使用者也需要花更多地心思去優化程式。

  除此之外,在實際使用的角度來說,資料分析在R中大部分時候使用已有的方法,因此可以使用眾多已經成型的package。如果你使用的package質量很好,通常在大計算量的程式中,作者實際使用的都是更低階更高效的語言(比如C, Fortran)。因此,這些大計算量的步驟實際上是以最高效的方式完成的。如果相應的運算在pyhon裡面沒有呼叫其他低階語言的優化,R就可以在這些方面勝過python。我這裡說到的是不需要自己編寫的底層語言呼叫,在R和python中都可以實現呼叫別的語言,但是這需要使用者自己程式設計,從人工角度來講,專業性較高,不在討論範圍。

  整體來說,對於對R使用和程式設計有一定深入理解的人來說,不認為R做資料分析的速度會比python差。但是對於簡單粗暴的程式設計方式,python的確更勝一籌。

  2.全面性:

  從這點來說,認為Python的確勝過R。無論是對其他語言的呼叫,和資料來源的連線、讀取,對系統的操作,還是正則表達和文書處理,Python都有著明顯優勢。畢竟,python本身是作為一門計算機程式語言出現的,而R本身只是源於統計計算。所以從語言的全面性來說,兩者差異顯著。

  綜上所述,對於本地檔案直接的資料分析,大部分時候R是比較Python更好的 (速度相近,但分析更專業)。如果涉及多方資源的協調(比如遠端、資料庫、系統、網頁),那麼最好的方式是將python和R相結合使用。

  當然,每種語言有自己的學習曲線。因此學習本身也要多花時間,因此如何選取還要依賴於個人而論。