當前位置:編程學習大全網 - 編程語言 - python 和 r 的區別 知乎

python 和 r 的區別 知乎

有人說Python和R的區別是顯而易見的,因為R是針對統計的,python是給程序員設計的,其實這話對Python多多少少有些不公平。2012年的時候我們說R是學術界的主流,但是現在Python正在慢慢取代R在學術界的地位。不知道是不是因為大數據時代的到來。

Python與R相比速度要快。Python可以直接處理上G的數據;R不行,R分析數據時需要先通過數據庫把大數據轉化為小數據(通過groupby)才能交給R做分析,因此R不可能直接分析行為詳單,只能分析統計結果。所以有人說:Python=R+SQL/Hive,並不是沒有道理的。

Python的壹個最明顯的優勢在於其膠水語言的特性,很多書裏也都會提到這壹點,壹些底層用C寫的算法封裝在Python包裏後性能非常高效(Python的數據挖掘包Orange canve 中的決策樹分析50萬用戶10秒出結果,用R幾個小時也出不來,8G內存全部占滿)。但是,凡事都不絕對,如果R矢量化編程做得好的話(有點小難度),會使R的速度和程序的長度都有顯著性提升。

R的優勢在於有包羅萬象的統計函數可以調用,特別是在時間序列分析方面,無論是經典還是前沿的方法都有相應的包直接使用。

相比之下,Python之前在這方面貧乏不少。但是,現在Python有了pandas。pandas提供了壹組標準的時間序列處理工具和數據算法。因此,妳可以高效處理非常大的時間序列,輕松地進行切片/切塊、聚合、對定期/不定期的時間序列進行重采樣等。可能妳已經猜到了,這些工具中大部分都對金融和經濟數據尤為有用,但妳當然也可以用它們來分析服務器日誌數據。於是,近年來,由於Python有不斷改良的庫(主要是pandas),使其成為數據處理任務的壹大替代方案。

做過幾個實驗:

1. 用python實現了壹個統計方法,其中用到了ctypes,multiprocess。

之後壹個項目要做方法比較,又用回R,發現壹些bioconductor上的包已經默認用parallel了。(但那個包還是很慢,壹下子把所有線程都用掉了,導致整個電腦使用不能,看網頁非常卡~)

2. 用python pandas做了壹些數據整理工作,類似數據庫,兩三個表來回查、匹配。感覺還是很方便的。雖然這些工作R也能做,但估計會慢點,畢竟幾十萬行的條目了。

3. 用python matplotlib畫圖。pyplot作圖的方式和R差異很大,R是壹條命令畫點東西,pylot是準備好了以後壹起出來。pyplot的顏色選擇有點尷尬,默認顏色比較少,之後可用html的顏色,但是名字太長了~。pyplot 的legend比R 好用多了,算是半自動化了。pyplot畫出來後可以自由拉升縮放,然後再保存為圖片,這點比R好用。

總的來說Python是壹套比較平衡的語言,各方面都可以,無論是對其他語言的調用,和數據源的連接、讀取,對系統的操作,還是正則表達和文字處理,Python都有著明顯優勢。 而R是在統計方面比較突出。但是數據分析其實不僅僅是統計,前期的數據收集,數據處理,數據抽樣,數據聚類,以及比較復雜的數據挖掘算法,數據建模等等這些任務,只要是100M以上的數據,R都很難勝任,但是Python卻基本勝任。

結合其在通用編程方面的強大實力,我們完全可以只使用Python這壹種語言去構建以數據為中心的應用程序。

但世上本沒有最好的軟件或程序,也鮮有人能把單壹語言挖掘運用到極致。尤其是很多人早先學了R,現在完全不用又舍不得,所以對於想要學以致用的人來說,如果能把R和Python相結合,就更好不過了,很早看過壹篇文章——讓R與Python***舞,咱們壇子裏有原帖,就不多說了,看完會有更多啟發。

BTW: 如果之前沒有學過R,可以先學Python然後決定是不是學R,如果學了R,學Python的時候會更快上手。

  • 上一篇:UG坐標系改變後,如何擺正視圖
  • 下一篇:什麽是Java虛擬機?
  • copyright 2024編程學習大全網