經(jīng)常有學(xué)員問我們,在數(shù)據(jù)科學(xué)領(lǐng)域里,到底是該選Python呢,還是選R更好?誠然,對(duì)于數(shù)據(jù)科學(xué)家來說,R和Python都很重要。但是對(duì)于一個(gè)新人數(shù)據(jù)科學(xué)家來說,又該如何取舍呢?同時(shí)學(xué)習(xí)Python和R也有些不切實(shí)際。作者TomWaterman作為過來人,他是先學(xué)了R,后來才學(xué)的Python,他給我們列出了為什么Python比R更適合數(shù)據(jù)科學(xué)領(lǐng)域的四大理由。InfoQ中文站翻譯并分享給大家。
我認(rèn)為,在數(shù)據(jù)科學(xué)領(lǐng)域,Python比R更合適的理由主要有四個(gè)。
新人數(shù)據(jù)科學(xué)家都面臨著一個(gè)問題,而這個(gè)問題非常重要:我是應(yīng)該學(xué)習(xí)Python呢,還是學(xué)習(xí)R?
問得好!這個(gè)問題真的非常重要。因?yàn)?,“男怕入錯(cuò)行,女怕嫁錯(cuò)郎”,要知道,學(xué)習(xí)第一門編程語言是需要耗費(fèi)數(shù)百個(gè)小時(shí)的。試圖都學(xué)這兩門編程語言是不切實(shí)際的,特別是當(dāng)你剛剛開始職業(yè)生涯的時(shí)候。
那么,你應(yīng)該做出怎樣的選擇呢?
根據(jù)我的經(jīng)驗(yàn),如果你選擇了Python,我相信,你的職業(yè)生涯將會(huì)因此受益良多。
在我看來,對(duì)數(shù)據(jù)科學(xué)這一職業(yè)來說,Python是更好的選擇,尤其是如果你剛剛起步的話。
我將給出四個(gè)理由,來說明為什么我認(rèn)為Python對(duì)你職業(yè)來說是更好的選擇,但我也要澄清一點(diǎn):我并不認(rèn)為R是一個(gè)糟糕的選擇。
選擇R并不會(huì)對(duì)你的工作機(jī)會(huì)產(chǎn)生什么負(fù)面影響,而是要取決于你的團(tuán)隊(duì),你甚至有可能會(huì)被要求學(xué)習(xí)R。事實(shí)上,F(xiàn)acebook將R作為內(nèi)部調(diào)查工具的分析組件,而我們所有的數(shù)據(jù)科學(xué)基礎(chǔ)設(shè)施都支持這門語言。
也就是說,我相信,如果你學(xué)習(xí)Python的話,你將會(huì)更快地成為一名實(shí)踐數(shù)據(jù)科學(xué)家,而且還能夠更好地在統(tǒng)計(jì)建模之外的重要領(lǐng)域?yàn)槟愕膱F(tuán)隊(duì)做出貢獻(xiàn)。
因此,學(xué)習(xí)Python將會(huì)使你能夠?yàn)楣編砀蟮挠绊懥?,而你的職業(yè)生涯也將因此碩果累累。
理由一:無論如何,你可能得學(xué)習(xí)Python
大多數(shù)公司要求他們的數(shù)據(jù)科學(xué)家所做的并不僅僅是預(yù)測建模(即機(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ù)我估計(jì),在Facebook,我們的數(shù)據(jù)科學(xué)家100%都會(huì)在每周使用Python,而積極使用R的人可能只有10%左右。
因此,對(duì)你來說,如果選擇Python的話,可能會(huì)更有效率:雖然你一旦找到工作就可以避開R,但不太可能會(huì)繞開Python。
理由二:Python更容易學(xué)習(xí)
要知道,成為可雇傭的人所需的時(shí)間非常重要,尤其是如果你是在大學(xué)以外的地方自學(xué)的話。
Python以易學(xué)而聞名。在學(xué)過Python和R之后(雖然我對(duì)Python方面更深入),我認(rèn)為,Python的聲譽(yù)是當(dāng)之無愧的。
當(dāng)你開始使用統(tǒng)計(jì)建模之外的語言特性時(shí),Python易學(xué)所帶來的好處尤為明顯。這些特性包括將項(xiàng)目打包用于分發(fā)、開發(fā)命令行界面、使用像SQLAlchemy這樣的對(duì)象關(guān)系映射(Object-relationalmapping,ORM)為數(shù)據(jù)結(jié)構(gòu)建模等等。
若掌握Python,將使你更容易精通這些特性,你的職業(yè)生涯也將因此受益。
理由三:Python的社區(qū)更龐大
Python是世界上最流行的編程語言之一,在Stackoverflow、Kaggle甚至Mediun等網(wǎng)站都有龐大的社區(qū)。
因此,當(dāng)你不可避免地遇到連自己也無法解決的問題時(shí),你更有可能找到那些在你之前遇到過這個(gè)問題、尋求過幫助并得到解決方案的人。
這意味著你將花費(fèi)更少的時(shí)間來調(diào)試與系統(tǒng)的兼容性問題,而將更多的時(shí)間用于交付可為公司帶來影響的代碼。
理由四:使用Python部署模型更容易
最后,在職業(yè)生涯中,你可能會(huì)達(dá)到這樣的一個(gè)階段:你希望能夠?qū)⒛P蛯?shí)時(shí)提供給任何一個(gè)最終用戶。要解決這個(gè)問題,你需要構(gòu)建一個(gè)基于REST的Web應(yīng)用程序,使用Python的話,這件事就會(huì)變得很容易。
實(shí)際上,Python擁有一些世界上最流行的Web應(yīng)用程序框架,即Django和Flask。你公司的內(nèi)部部署工具更有可能就支持這些框架,而且相對(duì)來說不太可能會(huì)支持R。
這些框架的流行也意味著它們得到了平臺(tái)即服務(wù)提供商(如Heroku、AmazonLightsail等)的良好支持。有了這些框架,你將能夠在線發(fā)布你的個(gè)人項(xiàng)目,而所需的工作量僅相當(dāng)于在R中部署相同項(xiàng)目所需工作量的一小部分。
最重要的是,如果你足夠幸運(yùn),你的公司在自己的產(chǎn)品中已經(jīng)使用了Python框架,那么學(xué)習(xí)Python就意味著你將有足夠的危機(jī)感,連接你自己的應(yīng)用內(nèi)跟蹤。若能夠自主為你的模型捕獲更多的特性,將會(huì)對(duì)你所能夠帶來的影響產(chǎn)生顯著的效果。
當(dāng)然,所有的決策都是需要權(quán)衡取舍的,選擇學(xué)習(xí)Python而不是R也沒有什么不同。盡管我個(gè)人認(rèn)為Python對(duì)數(shù)據(jù)科學(xué)職業(yè)來說是更好的選擇,但Python的缺點(diǎn)也同樣值得考慮。
對(duì)我來說,Python最大的缺點(diǎn)就是沒有與RStudio相當(dāng)?shù)墓ぞ摺ython最有可比性的是JupyterNotebook,但我個(gè)人覺得RStuduo更好一些,因?yàn)樗哂袛?shù)據(jù)探索的功能。
作者注:在寫完本文后,MarceloGarcia指出可以使用免費(fèi)的Spyder包作為RStudio的Python替代方案。但作者還沒有機(jī)會(huì)嘗試Spyder,但是看起來很棒!
R在學(xué)術(shù)界也非常流行,因此,R中軟件包的文檔更有可能是直接引用學(xué)術(shù)研究。這些文檔對(duì)于從事研究“前沿”工作的數(shù)據(jù)科學(xué)家來說非常有用。
但我并不認(rèn)為RStudio的缺乏,就能足以否定Python的相對(duì)優(yōu)勢。而且,在數(shù)據(jù)科學(xué)學(xué)術(shù)界從業(yè)者也少得多,這使得R的研究相關(guān)優(yōu)勢對(duì)大多數(shù)數(shù)據(jù)科學(xué)家來說不那么重要了。
因此,盡管R有很多優(yōu)點(diǎn),但我相信如果你選擇學(xué)習(xí)Python,你的職業(yè)生涯將會(huì)受益匪淺。
最后,我認(rèn)為值得一提的是,我并不認(rèn)為學(xué)習(xí)R就是個(gè)糟糕的選擇,只不過Python更可能是你職業(yè)生涯中的一個(gè)更好的選擇而已。要根據(jù)你的具體情況,學(xué)習(xí)R對(duì)你來說也有可能更有意義。
不管你選擇學(xué)習(xí)哪種語言,你都不應(yīng)該覺得你永遠(yuǎn)不能改變主意。要知道,所有的編程語言的相似之處可要遠(yuǎn)遠(yuǎn)多于不同之處:學(xué)習(xí)第二門編程語言要比第一門編程語言容易得多。
實(shí)際上,我恰恰選擇的就是先學(xué)習(xí)R的!因此,就算我現(xiàn)在建議將Python作為你職業(yè)生涯的更好選擇,但我也很難對(duì)R不認(rèn)可。
以上內(nèi)容為大家介紹了數(shù)據(jù)科學(xué)領(lǐng)域Python比R語言更好,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/