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