為什么Python在數(shù)據(jù)科學(xué)領(lǐng)域比R更受歡迎呢?
新入門的數(shù)據(jù)科學(xué)家都面臨一個(gè)非常重要的問(wèn)題:我應(yīng)該學(xué)習(xí)Python還是R?
這個(gè)問(wèn)題非常重要,因?yàn)閷W(xué)習(xí)第一門編程語(yǔ)言需要花費(fèi)很多時(shí)間。嘗試兩者兼得是不切實(shí)際的,尤其是在你剛開(kāi)始職業(yè)生涯的時(shí)候。
所以你應(yīng)該選哪一個(gè)呢?
根據(jù)我的經(jīng)驗(yàn),如果選擇Python,你的職業(yè)生涯會(huì)受益更多。
在我看來(lái),Python,尤其是在剛剛起步的情況下,是從事數(shù)據(jù)科學(xué)的更好選擇。
我會(huì)分四點(diǎn)來(lái)解釋為什么要選擇Python,但同時(shí)我要聲明,這并不意味著R是一個(gè)糟糕的選擇。
選擇R不會(huì)對(duì)你的工作產(chǎn)生負(fù)面影響,如果你的團(tuán)隊(duì)有要求,那你也必須去學(xué)習(xí)R。事實(shí)上,F(xiàn)acebook已經(jīng)使用R作為內(nèi)部調(diào)查工具的分析組件,我們所有的數(shù)據(jù)科學(xué)基礎(chǔ)設(shè)施都支持這種語(yǔ)言。
也就是說(shuō),我認(rèn)為如果先學(xué)習(xí)Python,作為一名實(shí)踐數(shù)據(jù)科學(xué)家,你將變得更有效率,并且能夠更好地在統(tǒng)計(jì)建模之外的重要領(lǐng)域?yàn)閳F(tuán)隊(duì)做出貢獻(xiàn)。
因此,學(xué)習(xí)Python后,你能為公司帶來(lái)更大的影響力,而你的職業(yè)生涯也會(huì)受益更多。
理由1:你總要學(xué)習(xí)Python
大多數(shù)公司不僅僅要求他們的數(shù)據(jù)科學(xué)家學(xué)會(huì)預(yù)測(cè)建模(即機(jī)器學(xué)習(xí))。至少,你可能需要維護(hù)為模型提供數(shù)據(jù)的數(shù)據(jù)管道,而這些數(shù)據(jù)管道可能是用Python構(gòu)建的。
如今,管道的行業(yè)標(biāo)準(zhǔn)是基于Python的Airflow,,而在Facebook,我們使用的內(nèi)部Python工具和其基本相同。
事實(shí)上,我估計(jì)Facebook的所有數(shù)據(jù)科學(xué)家每周都會(huì)使用Python,而只有大約10%的人會(huì)經(jīng)常使用R。
因此,選擇Python可能更有效:雖然一些工作可以避免使用R,但不太可能會(huì)避免使用Python。
理由2:Python更容易學(xué)習(xí)
在就業(yè)之前,你學(xué)習(xí)這些技能的時(shí)間非常重要,特別是在大學(xué)之外自學(xué)的話。
Python以易學(xué)而聞名。在同時(shí)學(xué)習(xí)了Python和R之后(盡管更深入地學(xué)習(xí)了Python),我認(rèn)為Python有此名聲當(dāng)之無(wú)愧。
當(dāng)你開(kāi)始使用統(tǒng)計(jì)建模以外的語(yǔ)言特性時(shí),Python易于學(xué)習(xí)的優(yōu)點(diǎn)尤其明顯。這些特性包括打包項(xiàng)目以供分發(fā)、開(kāi)發(fā)命令行接口、使用ORMs(如SQLAlchemy)建模數(shù)據(jù)結(jié)構(gòu)等。
使用Python能讓你更輕松地學(xué)會(huì)并精通這些特性,你的職業(yè)生涯也會(huì)因此受益。
理由3:Python社區(qū)更大
來(lái)源:Pexels
Python是全球最流行的編程語(yǔ)言之一,在stack overflow、kaggle甚至medium等站點(diǎn)上都有一個(gè)龐大的社區(qū)。
因此,當(dāng)遇到一個(gè)自己無(wú)法解決的問(wèn)題時(shí),你會(huì)更容易找到有經(jīng)驗(yàn)的人尋求幫助,解決問(wèn)題。
這意味著你無(wú)需在調(diào)試與系統(tǒng)的兼容性問(wèn)題上花太多時(shí)間,這樣一來(lái),你也有更多的時(shí)間交付公司所需的代碼。
理由4:Python更易于部署模型
最后,你可能會(huì)在職業(yè)生涯中達(dá)到這樣一個(gè)階段:你想實(shí)時(shí)將模型提供給任何一個(gè)終端用戶。要解決這個(gè)問(wèn)題,需要構(gòu)建一個(gè)基于REST的web應(yīng)用程序,而使用Python來(lái)構(gòu)建這個(gè)程序會(huì)容易很多。
事實(shí)上,Python擁有一些全球最流行的web應(yīng)用框架,即Django和Flask。你公司的內(nèi)部部署工具更可能支持這些框架,而相對(duì)不太可能支持R。
這些框架的流行還意味著它們得到了平臺(tái)即服務(wù)提供商(如Heroku、Amazon Lightsail等)的良好支持。你將能夠在線發(fā)布個(gè)人項(xiàng)目,這與在R中部署相同項(xiàng)目所需的花費(fèi)相比,簡(jiǎn)直是九牛一毛。
最重要的是,如果你足夠幸運(yùn),你的公司為自己的產(chǎn)品使用了Python框架,學(xué)習(xí)Python意味著連接你的應(yīng)用內(nèi)跟蹤變得十分危險(xiǎn)。如果你能自主為模型捕獲更多的功能,個(gè)人影響力會(huì)發(fā)生巨大改變。
當(dāng)然,所有的決定都有取舍,選擇學(xué)習(xí)Python而不是R也是如此。盡管我相信Python是數(shù)據(jù)科學(xué)職業(yè)的更好選擇,但也要考慮它帶來(lái)的不利因素。
對(duì)我來(lái)說(shuō),Python最大的缺點(diǎn)是沒(méi)有等同于Rstudio的工具。在Python中最具可比性的工具是Jupyter Notebook,但我個(gè)人認(rèn)為Rstudio更好,因?yàn)樗哂袛?shù)據(jù)探索功能。
R在學(xué)術(shù)界也很受歡迎,因此R中包的文檔更有可能直接引用學(xué)術(shù)研究。這些文檔對(duì)于從事“尖端”研究的數(shù)據(jù)科學(xué)家來(lái)說(shuō)非常有用。
但我不認(rèn)為缺少和Rstudio等同的工具可以否定Python的相對(duì)優(yōu)勢(shì)。在數(shù)據(jù)科學(xué)學(xué)術(shù)界,職位也少得多,所以對(duì)大多數(shù)數(shù)據(jù)科學(xué)家來(lái)說(shuō),R的研究相關(guān)優(yōu)勢(shì)也不那么重要了。
因此,盡管R有很多優(yōu)點(diǎn),但我相信如果你選擇學(xué)習(xí)Python,職業(yè)生涯將會(huì)受益匪淺。
最后值得一提的是,我并不認(rèn)為學(xué)習(xí)R是一個(gè)糟糕的選擇,最重要的是,不論選擇哪種語(yǔ)言,你都不應(yīng)該永遠(yuǎn)止步于此。所有的編程語(yǔ)言之間,相似之處總是多于差異:學(xué)習(xí)第二語(yǔ)言也會(huì)比學(xué)習(xí)第一語(yǔ)言容易得多。
事實(shí)上,我選擇了先學(xué)習(xí)R!因此盡管我現(xiàn)在推薦Python作為職業(yè)生涯的更好選擇,我也很難對(duì)R作出不好的評(píng)價(jià)。