一、R與Python都有啥继榆?
* **R**
相信各位有數(shù)理統(tǒng)計巾表、金融計量汁掠、生物科學背景的同學對R語言都不陌生,而且他們的畢業(yè)論文和期刊論文的寫作很可能已經(jīng)用到了R集币。
R自帶常用的統(tǒng)計分析函數(shù)和十分豐富的功能包支持考阱。例如,可以用R快速生成1000條符合正態(tài)分布或卡方分布的數(shù)據(jù)鞠苟,在分析相關(guān)的問題時乞榨,它可以幫你節(jié)省不少的時間;例如当娱,你用Excel吃既、PPT或者Tableau制作的圖表和報告,用R也能一樣的制作跨细,而且可以程序化部署鹦倚,定期自動更新數(shù)據(jù)生成圖表和分析報告;再例如冀惭,對常用的數(shù)據(jù)分析方法和機器學習算法都可以通過加載相關(guān)的包震叙,直接調(diào)用函數(shù)使用,即使非常復(fù)雜的算法散休,也可以只通過兩三行的代碼搞定媒楼。此外,R標配的IDE-Rstudio戚丸,用戶有著很好的交互和使用體驗划址。
* **Python**
“假如某一天,你在馬路邊隨機問一個剛放學的小朋友昏滴,可能他不知道R猴鲫,但他一定聽說過Python”对人∫ナ猓可見,要說近年來最風靡牺弄、最流行的計算機語言姻几,絕對非python莫屬了。
相對于C和JAVA語言势告,Python的學習門檻更低蛇捌,無需繁雜的變量聲明等特點,大幅減少程序員的操作負擔咱台,同時語法結(jié)構(gòu)接近英文表達络拌,易于讀寫,甚至被稱為最“優(yōu)雅”的編程語言回溺。更重要的是春贸,Python不僅運用于后端計算服務(wù)和前端網(wǎng)頁開發(fā)混萝,也同樣能處理數(shù)據(jù)分析、機器學習的問題萍恕,具有很強的擴展性和兼容性逸嘀,你能想到的它幾乎都能做到,十分神奇允粤。
* **R vs Pyhon**
R和Python 都是高級分析工具崭倘,各自都有眾多的簇擁者和強大的社區(qū)支持,在網(wǎng)絡(luò)爬蟲类垫、數(shù)據(jù)加工司光、數(shù)據(jù)可視化、統(tǒng)計分析悉患、機器學習飘庄、深度學習等領(lǐng)域都有豐富第三方包提供調(diào)用。以下羅列R和python在各數(shù)據(jù)工作領(lǐng)域的資料信息购撼,看看它們都有啥跪削?
R與Python,有強大的社區(qū)資源迂求,可供學習和經(jīng)驗分享:
| R語言 | Python語言 |
| R journal
鏈接:[https://journal.r-project.org](https://link.zhihu.com/?target=https%3A//journal.r-project.org) Stack Overflow 鏈接:[https://stackoverflow.com/](https://link.zhihu.com/?target=https%3A//stackoverflow.com/) Rweekly 鏈接:[https://rweekly.org/](https://link.zhihu.com/?target=https%3A//rweekly.org/) | Python中文社區(qū)維基
鏈接:[https://python-chinese.github.io/](https://link.zhihu.com/?target=https%3A//python-chinese.github.io/) python中文學習大本營 鏈接:[http://www.pythondoc.com/](https://link.zhihu.com/?target=http%3A//www.pythondoc.com/) PythonTab 鏈接:[https://www.pythontab.com/](https://link.zhihu.com/?target=https%3A//www.pythontab.com/) |
在不同數(shù)據(jù)場景下碾盐,R和Python有豐富的第三包可供加載和框架選擇,可以很好幫助分析師揩局、研究員以及開發(fā)員提高工作效率:
| 功能名稱 | R語言 | Python語言 |
| 爬蟲 | Rvest毫玖、Rcurl、httr凌盯、XML付枫、Rwebdriver | Urllib、requests驰怎、bs4阐滩、selenium、splash |
| 數(shù)據(jù)讀取 | Openxlsx县忌、utils掂榔、readxl、xlsx症杏、xlsx2装获、data.table | pandas |
| 數(shù)據(jù)加工(ETL) | Plyr、dplyr厉颤、reshape2穴豫、caret、tidyr逼友、mice精肃、stringr | numpy潘鲫、pandas、sklearn肋杖、re |
| 數(shù)據(jù)可視化 | ggplot2溉仑、ggmap、lattice状植、gganimate浊竟、leaflet、REmap津畸、plotly振定、rCharts、animation | Matplotlib肉拓、seaboen后频、bokeh、pyecharts暖途、Pygal |
| 統(tǒng)計分析卑惜、回歸分析 | Stats、tseries驻售、lmtest露久、nlme | statsmodels、scipy |
| 機器學習 | Stats欺栗、glmnet | statsmodels毫痕、scipy |
| 深度學習 | Keras、MXNetR迟几、darch消请、deepnet、H2O类腮、deepr | TensorFlow臊泰、Keras、Pytorch存哲、Theano因宇、MXNET |
通過加載不同的功能包七婴,用戶可以在用少量的代碼下祟偷,快速實現(xiàn)算法邏輯:
| 算法名稱 | R語言 | Python語言 |
| 決策樹算法 | Repart、party打厘、C50修肠、RWeka | sklearn |
| 集成算法 | adabag、randomForest | sklearn户盯、xgboost |
| 貝葉斯算法 | klaR | sklearn |
| K鄰近算法 | Stats嵌施、kknn | sklearn |
| 支持向量機 | Kernlab饲化、e1071 | sklearn |
| 神經(jīng)網(wǎng)絡(luò) | RSNNS、neuralnet吗伤、nnet | Neurolab吃靠、tensorflow |
| 聚類算法 | stats、Nbclust足淆、fpc巢块、mclust | sklearn |
| 關(guān)聯(lián)規(guī)則 | arules | mlxtend |
這么看,好像R和Python能做的事情都差不多巧号,在主要的數(shù)據(jù)處理場景族奢,雙方都可以通過加載包和調(diào)用函數(shù)來解決問題。然而丹鸿,二者雖然彼此功能覆蓋越走,但卻不能因此說他們之間沒有區(qū)別,它們還是有各自獨特的地方:
* 在**深度學習**領(lǐng)域靠欢,例如自然語言處理廊敌、圖像識別等。相對于R门怪,Python對GPU有更好的支持庭敦,雖然R也支持KERAS運算,但是實現(xiàn)效率較低薪缆、成本較高秧廉,你可以想象這樣的一個場景,當你使用R做深度學習時拣帽,經(jīng)歷一番搜索和研究疼电,剛把需要的環(huán)境搭建好,人家用Python的已經(jīng)可以提交項目結(jié)果了减拭。因此蔽豺,在深度學習領(lǐng)域,Python會有更好的表現(xiàn)拧粪。
* 在**機器學習**領(lǐng)域修陡,Python與R算是難分仲伯,可能Python還是略好于R一些可霎。最主要原因是每當有新的套件或者算法時魄鸦,基本是用Python先開發(fā)出來。Python這樣的優(yōu)勢還體現(xiàn)在網(wǎng)絡(luò)爬蟲領(lǐng)域癣朗,尤其是研發(fā)人員在進行一些比較復(fù)雜的爬蟲任務(wù)時拾因,Python會有更多的資源,包含方法和套件。除此之外绢记,在計算效率扁达、計算穩(wěn)定性等方面兩者并無顯著差異。
* 在**統(tǒng)計分析**領(lǐng)域蠢熄,R的綜合表現(xiàn)更優(yōu)于Python跪解。R最早是統(tǒng)計學家為統(tǒng)計工作所開發(fā)的工具,他們甚至通過R代碼和程序來交流分析思想签孔,許多比較復(fù)雜的統(tǒng)計模型和統(tǒng)計檢驗方法在R上都可以比較輕松的實現(xiàn)惠遏。本人也曾參與過一些項目的統(tǒng)計分析工作,并借機對比Python和R處理同樣任務(wù)的執(zhí)行情況骏啰,R確實會比Python方便不少节吮。
* 在**數(shù)據(jù)可視化**領(lǐng)域,雖然Python有一些很好的可視化程序庫判耕,例如Seaborn透绩、Bokeh和Pygal,但與R對比壁熄,在Python中進行可視化有些復(fù)雜帚豪,可調(diào)節(jié)的參數(shù)較少,且圖表樣式的控制會更麻煩一些草丧。對于一個分析師或一個研發(fā)人員狸臣,在歷經(jīng)“艱辛”得到分析結(jié)果后,卻需要花很多時間調(diào)整可視化展示結(jié)果昌执,其實是會缺少耐心的烛亦,而R在這方面的會給出更好的體驗。
對比Python懂拾,R還有一個不得不提的優(yōu)點煤禽,就是基于web交互界面應(yīng)用框架Shiny,和Desktop版Rstudio岖赋,它們安裝簡單檬果,部署方便,在第三方資源包管理唐断、腳本編輯选脊、變量管理、數(shù)據(jù)預(yù)覽脸甘、結(jié)果呈現(xiàn)方面都為使用者提供了很大的便利恳啥。
另外,R與Python也并不是完全孤立的斤程。在R中角寸,用戶可以通過rPython包運行Python代碼菩混,調(diào)用Python的函數(shù)忿墅。而在Python中扁藕,也可以使用RPy2包運行R代碼,同樣提供了一個從Python到R的輸送路徑疚脐,基本實現(xiàn)了用戶“取二者精華而用之“的美好愿景亿柑。
本次對R和Python的分析更多的體現(xiàn)在“定性”層面,關(guān)于“定量”層面的對比(計算性能方面的對比)棍弄,如果有合適機會望薄,將會繼續(xù)分享。想了解“定量”層面對比的讀者呼畸,可以閱讀以下網(wǎng)絡(luò)上“前輩‘們的文章:
推薦文章1:如何將Python和R整合進一個數(shù)據(jù)分析流程
推薦文章2:大數(shù)據(jù)分析Python和R的優(yōu)缺點
推薦文章3:Python與R的爭鋒:大數(shù)據(jù)初學者該怎樣選痕支?
二、R與Python選哪個蛮原?
那么卧须,說了這么多,R與Python到底應(yīng)該學哪個儒陨?通過以下兩個問題的回答花嘶,希望你的心中能有你想要的答案。
第一個問題是:你的公司同事們現(xiàn)在使用哪種語言蹦漠?
所有的工具的使用的最終目的椭员,是為方便發(fā)現(xiàn)問題和為問題尋求最優(yōu)解決方案的,因此建議學習某種語言前笛园,應(yīng)該以解決問題為首要目標隘击。如果你發(fā)現(xiàn)你的公司或者你所在的部門已經(jīng)開始運用某種語言作為分析工具(不局限于Python或者R),那么建議你優(yōu)先考慮該語言研铆,因為你的“所學“可以立馬轉(zhuǎn)化為你的”所用“闸度,進而反過來繼續(xù)促使你”學“,周而復(fù)始蚜印,對知識頻繁的輸入和輸出莺禁,這是最有效的成長和價值體現(xiàn)方式。不僅如此窄赋,這樣的方式也方便你與同事分享和維護代碼哟冬,提高溝通和協(xié)同工作的效率,更容易實現(xiàn)公司成果產(chǎn)出忆绰,這比單純討論哪種語言更”牛逼“更為重要浩峡。
第二個問題是:你準備花多少時間學習?需要解決什么樣的問題错敢?
面對問題翰灾,當你精力有限時缕粹,你不得不面臨指標是投入產(chǎn)出比,即纸淮,如何解決同樣的問題花最少的時間平斩,或者花同樣的時間解決更多的問題。
在學習時間方面:剛開始學習R時有一個陡峭的學習曲線咽块,到后面趨于平緩绘面,因此R的入門門檻較高,但是一旦了解了最基本的知識侈沪,就能比較容易的學習更高級的內(nèi)容揭璃。而與之對應(yīng)的是,Python語句易讀易懂亭罪,學習曲線起始階段相對較低且平緩瘦馍,到后面會逐漸陡峭,也就是Python入門門檻低应役,但是到后續(xù)更深層的高級應(yīng)用時情组,學習會比較困難。
在問題類型方面:經(jīng)過上文闡述扛吞,在深度學習呻惕、機器學習、網(wǎng)絡(luò)爬蟲和API構(gòu)建滥比,Python的綜合實力要優(yōu)于R亚脆;而在數(shù)理統(tǒng)計分析、數(shù)據(jù)處理盲泛、數(shù)據(jù)可視化及IDE交互體驗濒持,R的綜合表現(xiàn)要優(yōu)于Python。
因為文章著重討論“數(shù)據(jù)分析寺滚,R與Python怎么選柑营?”,也考慮數(shù)據(jù)分析師的職業(yè)發(fā)展路徑村视,因此在統(tǒng)計分析官套、數(shù)據(jù)可視化、數(shù)據(jù)處理蚁孔、機器學習奶赔、深度學習這五個相關(guān)的領(lǐng)域,結(jié)合時間成本杠氢,給出建議如下:
寫在最后
文章的建議是在特定場景和有限資源的前提下站刑,選擇R或者Python開始數(shù)據(jù)分析師“菜鳥時期”的工作。但是鼻百,R和Python在實際運用中它們各有所長绞旅,各具價值摆尝,日后隨著解決的問題越多,值得深挖的點也會越來越多因悲,如果還是專注于”R還是Python堕汞?”的問題,那么就會忽視這兩者給數(shù)據(jù)工作的帶來的最大價值囤捻。作者還是強調(diào)臼朗,任何工具的學習和運用邻寿,最終的目的都是幫助更好的發(fā)現(xiàn)問題和解決問題蝎土,至于R還是Python,當你還在糾結(jié)這個選項的時候绣否,許多團隊已經(jīng)同時裝備著R和Python誊涯,解決了一個又一個問題了!
感謝作者:
原創(chuàng)來自---->
https://www.zhihu.com/people/liberator77
解放者will
洞察百態(tài)蒜撮,不落世俗斷見暴构;人生盡頭,希望小有成就段磨。