R 和 Python用于統(tǒng)計(jì)學(xué)分析,哪個(gè)更好?
知乎有人提問(wèn),R 和 Python (numpy scipy pandas) 用于統(tǒng)計(jì)學(xué)分析,哪個(gè)更好?
從專業(yè)角度來(lái)看,「R在統(tǒng)計(jì)分析領(lǐng)域肯定是強(qiáng)于Python的。」
畢竟R這門語(yǔ)言本身就是為統(tǒng)計(jì)而生的,而且是統(tǒng)計(jì)學(xué)專家在維護(hù)R社區(qū),沉淀了數(shù)理統(tǒng)計(jì)領(lǐng)域眾多權(quán)威算法、函數(shù)、工具。
同時(shí)R的可視化功能也非常強(qiáng)大,很多頂級(jí)期刊論文也都用R做分析工具。
R不光比Python在統(tǒng)計(jì)上更強(qiáng)大,甚至和SAS、SPSS這些商業(yè)軟件對(duì)比也不落下風(fēng),而且更靈活。
所以如果你的工作涉及重要的統(tǒng)計(jì)工作,建議用R。stackoverflow上有很多R的專業(yè)回答,但R在中文領(lǐng)域資料很少,要學(xué)好英文。
R的官方文檔:https://cran.r-project.org/doc/manuals/r-release/R-intro.html
R包學(xué)習(xí):https://cran.r-project.org/web/packages/available_packages_by_name.html
R入門書籍:《R語(yǔ)言實(shí)戰(zhàn)》、《R語(yǔ)言編程藝術(shù)》
但R有兩個(gè)缺點(diǎn),首先語(yǔ)法比較繞,學(xué)習(xí)路徑很陡峭;
再者應(yīng)用領(lǐng)域集中在數(shù)理統(tǒng)計(jì)、可視化、機(jī)器學(xué)習(xí)上,拓展性稍弱。
而Python完美了解決了這兩個(gè)問(wèn)題,對(duì)初學(xué)者極其友好,網(wǎng)上有無(wú)數(shù)的Python資源。
并且Python出了統(tǒng)計(jì)分析,還能做各種各樣的事,web、爬蟲(chóng)、GUI、自動(dòng)化、AI等等,幾乎無(wú)所不能。
對(duì)于統(tǒng)計(jì)分析領(lǐng)域,Python目前也有很多解決方案,雖然不及R專業(yè),但基本上能滿足95%以上的需求。比如說(shuō):
Scipy-科學(xué)計(jì)算庫(kù),包含的功能有最優(yōu)化、線性代數(shù)、積分、插值、擬合、特殊函數(shù)、快速傅里葉變換、信號(hào)處理和圖像處理、常微積分求解等其他科學(xué)與過(guò)程中常用的計(jì)算。
Numpy-數(shù)值計(jì)算庫(kù),提供了強(qiáng)大的數(shù)組計(jì)算功能,可用來(lái)存儲(chǔ)和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多,支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。
StatsModels-統(tǒng)計(jì)建模庫(kù),提供了包含統(tǒng)計(jì)模型、統(tǒng)計(jì)測(cè)試和統(tǒng)計(jì)數(shù)據(jù)挖掘的各種函數(shù)和模塊。
Pandas-數(shù)據(jù)分析庫(kù),基于NumPy的一種工具,為解決數(shù)據(jù)分析任務(wù)而生。納入大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供高效地操作大型數(shù)據(jù)集所需的工具及大量的能快速便捷處理數(shù)據(jù)的函數(shù)和方法。
Sympy-科學(xué)計(jì)算庫(kù),類似matlab,用一套強(qiáng)大的符號(hào)計(jì)算體系完成諸如多項(xiàng)式求值、求極限、解方程、求積分、微分方程、級(jí)數(shù)展開(kāi)、矩陣運(yùn)算等等計(jì)算問(wèn)題。
...
如果你的工作中只是偶爾會(huì)用到統(tǒng)計(jì)分析,還會(huì)兼顧其他數(shù)據(jù)場(chǎng)景,那么建議你用Python,可以囊括你所有的需求。
如果你的工作場(chǎng)景會(huì)涉及到大數(shù)據(jù),那么可以考慮Scala作為補(bǔ)充。
下面是R、Python、Scala三種語(yǔ)言在數(shù)據(jù)分析領(lǐng)域最受歡迎的工具包,供參考: