R和Python兩者誰更適合數(shù)據(jù)分析領(lǐng)域?在某些特定情況下誰會更有優(yōu)勢?還是一個天生在各方面都比另一個更好?
當(dāng)我們想要選擇一種編程語言進行數(shù)據(jù)分析時,相信大多數(shù)人都會想到R和Python——但是從這兩個非常強大、靈活的數(shù)據(jù)分析語言中二選一是非常困難的。
我承認(rèn)我還沒能從這兩個數(shù)據(jù)科學(xué)家喜愛的語言中選出更好的那一個。因此,為了使事情變得有趣,本文將介紹一些關(guān)于這兩種語言的詳細(xì)信息,并將決策權(quán)留給讀者。值得一提的是,有多種途徑可以了解這兩種語言各自的優(yōu)缺點。然而在我看來,這兩種語言之間其實有很強的關(guān)聯(lián)。
Stack Overflow趨勢對比
上圖顯示了自從2008年(Stack Overflow 成立)以來,這兩種語言隨著時間的推移而發(fā)生的變化。
R和Python在數(shù)據(jù)科學(xué)領(lǐng)域展開激烈競爭,我們來看看他們各自的平臺份額,并將2016與2017年進行比較:
接下來我們將從適用場景、數(shù)據(jù)處理能力、任務(wù)、安裝難度以及開放工具等方面詳細(xì)了解這兩種語言。
適用場景
R適用于數(shù)據(jù)分析任務(wù)需要獨立計算或單個服務(wù)器的應(yīng)用場景。Python作為一種粘合劑語言,在數(shù)據(jù)分析任務(wù)中需要與Web應(yīng)用程序集成或者當(dāng)一條統(tǒng)計代碼需要插入到生產(chǎn)數(shù)據(jù)庫中時,使用Python更好。
任務(wù)
在進行探索性統(tǒng)計分析時,R勝出。它非常適合初學(xué)者,統(tǒng)計模型僅需幾行代碼即可實現(xiàn)。Python作為一個完整而強大的編程語言,是部署用于生產(chǎn)使用的算法的有力工具。
數(shù)據(jù)處理能力
有了大量針對專業(yè)程序員以及非專業(yè)程序員的軟件包和庫的支持,不管是執(zhí)行統(tǒng)計測試還是創(chuàng)建機器學(xué)習(xí)模型,R語言都得心應(yīng)手。
Python最初在數(shù)據(jù)分析方面不是特別擅長,但隨著NumPy、Pandas以及其他擴展庫的推出,它已經(jīng)逐漸在數(shù)據(jù)分析領(lǐng)域獲得了廣泛的應(yīng)用。
開發(fā)環(huán)境
對于R語言,需要使用R Studio。對于Python,有很多Python IDE可供選擇,其中Spyder和IPython Notebook是最受歡迎的。
熱門軟件包和庫
下面羅列了R和Python推出的針對專業(yè)以及非專業(yè)程序員的最熱門的軟件包和庫。
R:針對專業(yè)程序員的熱門軟件包
用于數(shù)據(jù)操作的 dplyr、plyr和 data table
用于字符串操作的 stringr
定期和不定期時間序列 zoo
數(shù)據(jù)可視化工具 ggvis、lattice 和 ggplot2
用于機器學(xué)習(xí)的 caret
R:針對非專業(yè)程序員的熱門軟件包
Rattle
R Commander
Deducer
這些完整的GUI包可以實現(xiàn)強大的數(shù)據(jù)統(tǒng)計和建模功能。
Python:針對專業(yè)程序員的熱門庫
用于數(shù)據(jù)分析的 pandas
用于科學(xué)計算的 SciPy 和 NumPy
用于機器學(xué)習(xí)的 scikit-learn
圖表庫 matplotlib
statsmodels 用來探索數(shù)據(jù),估算統(tǒng)計模型,并執(zhí)行統(tǒng)計測試和單元測試
Python:針對非專業(yè)程序員的熱門庫
Orange Canvas 3.0是遵循GPL協(xié)議的開源軟件包。它使用一些常用的Python開源庫進行科學(xué)計算,包括numpy、scipy和scikit-learn。
R 和 Python 詳細(xì)對比
正如本文開頭提到的,R和Python之間有很強的關(guān)聯(lián),并且這兩種語言日益普及。很難說哪一種更好,它們兩者的整合在數(shù)據(jù)科學(xué)界激起了許多積極和協(xié)作的波瀾。
總結(jié)
事實上,日常用戶和數(shù)據(jù)科學(xué)家可以同時利用這兩者語言,因為R用戶可以在R中通過 rPython包來運行R中的Python代碼,而Python用戶可以通過RPy2庫在Python環(huán)境中運行R代碼。