Python 在數據分析工作中的地位與 R 語言、SAS、SPSS 比較如何?
全部用過的人來回答一下:
spss對用戶的要求是只要會點擊菜單就可以了,有編程窗口但是一般沒人用,用戶多是收到過一些統計訓練的,但不需要高深的分析能力,市場調研用的比較多,統計專業大二一般要求掌握sas內裝許多寫好的procedure 而且都是經過Fda認證的 有保障的東西 所以死貴好處是權威 壞處是不夠靈活 演算法更新慢 還有 死貴。語法奇怪 不是那種傳統意義上做編程的語言 所以循環啊什麼的涉及演算法的會不那麼方便,也不是matlab這種數學語言 所以數學運算很麻煩 除非你買iml庫 但就是因為權威 所以藥廠要用(老大fda認證的啊)還有銀行的風控也會用 sas還有個好處是大數據處理 內裝的proc sql還不錯 但說實話我更喜歡直接用mysql
接下來是R 開源 所以更新很快 新的理論很快就可以用上 數據處理尤其方便 data frame list啥的 好想念啊 生物 醫藥 和學校里的研究喜歡用 我想R的出現解決了許多非IT人需要面對大量編程的困擾,如果我們排序 難道要從bubble演算法開始嗎?所以一開始被人們說R是matlab的精簡版 但是都用過之後才知道R更輕便好學 而且開源啊 免費啊 沒那麼多跟linux 還是windows的兼容問題啊 R調用C可以極大提高loop的速度,monte carlo的時候簡直就是天使!我目睹過同事拿matlab連C那個費勁喲 總之 如果你是要做有自己想法的 也就是需要自己編程的 強推R 對了 我的R是在trading floor學的 所以別說金融不用 現在金融的最前端 R也是很流行的
python最後說 最近三個月剛開始用 一開始簡直是pain!不得不說pandas的數據處理便捷程度還是比不上R 但是習慣了就算了 python的好處在於可以做很多事情 不僅僅是統計 所以應用面會更廣 其他我不知道 數學建模上 和matlab非常相似的語法 win32 module里和office兼容很棒 既可以做stand-alone又可以做大型開發 等等等
另外 說到金融的應用 很多(比R更多)quant的部門都會用python 我甚至面試過hedge fund就是直接說他們全部用python做的 畢竟如果真要寫演算法 R會慢很多 而寫C++的人畢竟IT居多 那種數學系寫出來的演算法他們做不來 而數學系的C++又沒那麼好 所以python就有了用武之地
總之R和Sas是專業性更強的統計軟體 統計專業學生必備
spss是更大眾化的統計軟體 完成一些諸如問卷分析 簡單回歸之類的小問題 python不是統計軟體 而是一種可以用來做各種事情的語言 stata介於spss和sas之間 編程的時候難受的頭髮都掉了
另外 只有R和python是開源 開源不僅僅是免費 更重要的 它是由許多人在維護開發的 所以對新的要求新的理論可以很快付出實踐 但風險就是可能有錯(不過錯誤也會很快改正) 所以你如果要絕對正確 用付費的 至少錯了還可以打官司 (順便提一下revolution R 是R的付費有擔保版本)如果你喜歡更flexible的 用開源 (順便提一下octave,不過我還是不喜歡matlab系列的語法)如果你用很簡單的統計甚至不懂統計 用spss
如果你只是統計 或者只是自己一個人幹活 用R 如果你是一個公司要做一個大家一起用的平台並且工作內容涉及到統計以外 用python
其實R也可以連sql c c++ 關鍵是精通一門 然後你會發現其他都是浮雲………
其實作為R和python的重度使用者 我更喜歡R 但是……公司的平台全部換成python了………
最後抱歉 好睏 手欠想隨便回答一下 結果寫了這麼多 所以有點亂 標點都用空格了……Python與R不同,Python是一門多功能的語言。數據統計是更多是通過第三方包來實現的。
具體來說,我常用的Python在統計上面的Package有這樣一些
1.Numpy與Scipy。這兩個包是Python之所以能在數據分析佔有一席之地的重要原因。其中Numpy封裝了基礎的矩陣和向量的操作,而Scipy則在Numpy的基礎上提供了更豐富的功能,比如各種統計常用的分布和演算法都能迅速的在Scipy中找到。2.Matplotlib。這個Package主要是用來提供數據可視化的,其功能強大,生成的圖標可以達到印刷品質,在各種學術會議裡面出鏡率不低。依託於Python,可定製性相對於其他的圖形庫更高。還有一個優點是提供互動化的數據分析,可以動態的縮放圖表,用做adhoc analysis非常合適。3.Scikit Learn。非常好用的Machine Learning庫,適合於用於快速定製原型。封裝幾乎所有的經典演算法(神經網路可能是唯一的例外,不過這個有Pylearn2來補充),易用性極高。4.Python標準庫。這裡主要是體現了Python處理字元串的優勢,由於Python多功能的屬性和對於正則表達式的良好支持,用於處理text是在合適不過的了。基本上就日常使用就涉及這些。符號運算等等也有Sympy和Theano等強力第三方庫來支持。總結,Python在你列舉這些裡面是綜合功能最強大的,但是這些功能分散在第三方庫裡面,沒有得到有機的整合,相應的學習成本會較高。python與R相比速度要快。python可以直接處理上G的數據;R不行,R分析數據時需要先通過資料庫把大數據轉化為小數據(通過groupby)才能交給R做分析,因此R不可能直接分析行為詳單,只能分析統計結果。Python=R+SQL/Hive
R的優勢在於有包羅萬象的統計函數可以調用,特別是在時間序列分析方面(主要用在金融分析與趨勢預測)無論是經典還是前沿的方法都有相應的包直接使用;相比python在這方面貧乏不少。
Python的優勢在於其膠水語言的特性,一些底層用C寫的演算法封裝在python包里後性能非常高效(Python的數據挖掘包Orange canve 中的決策樹分析50萬用戶10秒出結果,用R幾個小時也出不來,8G內存全部佔滿)。
總的來說Python是一套比較平衡的語言,各方面都可以,而R是在統計方面比較突出。但是數據分析其實不僅僅是統計,前期的數據收集,數據處理,數據抽樣,數據聚類,以及比較複雜的數據挖掘演算法,數據建模等等這些任務,只要是100M以上的數據,R都很難勝任,但是Python卻基本勝任。
補充一下:
Python有專門的數據分析包Pandas用來完成類似SQL的功能,不過Pandas是會把數據都load到內存里,如果數據太大(2G以上)需要想辦法分chunk分析,或者用pytables/pyh5轉換為hdf5格式的文件在硬碟上分析。另外如果是windows環境的話,建議用winpython,上面提到的這些包會自帶。當然更豐富的是pythonxy可惜這個只有32位的。SAS和SPSS是商業數據分析軟體,本屌從來沒用過。我比較深入的使用過Python和R,給我的感覺有以下幾點:關於R優點:各類包非常豐富,尤其是在時間序列分析和一些前沿演算法缺點:速度慢========================ps:關於R速度慢是有解決辦法的,各位客官請看:替換Rblas為R提速
關於Python
優點:工業級編程語言,使用範圍廣,功能強大,其數據分析的性能由於有numpy with MKL,性能可以達到單機的極限;對於經典演算法的實現相對而言比較豐富缺點:畢竟是一群程序員在寫統計軟體,多少會有一些覆蓋不全面和不直觀的地方;前沿演算法缺失很厲害;時間序列分析大部分函數都沒有成型。=======================================一個簡單的入門:python計量系列這裡有我用Python做的一個小案例:對sfgg所有博客的數據統計Python可以提供一整套的數據採集,清洗,分析的工具,然而R僅僅是分析工具===================================================寫給樓主的忠告,把Python和R都學了吧,Python學起來真的很舒服,用起來也趁手;R嘛,別人都搞不定的時候,就得它上了。從KDnuggets排名上看,如下12年和13年的情況:
結果不言而喻,鏈接點這裡(Languages used for analytics / data mining / data science)。
但是,如果你具體到某個行業和業務場景的話,情況就不同了。總的來說,python相比於RSASSPSS 更是一種語言(靈活)——當你提到python,第一感覺就是計算機語言和科學計算,而RSASSPSS則更加統計。說說我的經驗吧,我的工作偏向於數據分析建模,所以PYTHON主要用來處理一些數據,比如做名稱關鍵字的切詞統計。SPSS主要用於對處理好的數據作分析,生成報告。
sas在醫藥統計界還是佔有很大的市場份額,但單機版目前只能在windows上使用,需要寫代碼,也可以按鈕操作但遠沒有寫代碼來的快速。 sas studio(網路版)可以在mac或者windows上使用,而且有很多已經寫好的畫圖製表功能只需調用即可,操作非常簡單。美國很多公共衛生專業都將sas專門列為學習科目。
spss 據我所知在中國普遍流行。做科研的醫生或者公共衛生專業人士普遍使用spss處理和分析軟體。spss以點擊圖標操作式為主,消耗時間,所以特別適合不需要處理複雜數據的人士使用。
stata既可以圖標操作也可以寫代碼,不同版本對於數據行數列數有規定,且一次只能操作一張表格,不是很方便。
R作為開源軟體有很多好的包可以調用,編程和建模方面較強。 但對於數據的處理,例如改變數名稱,數據清理等做的不是特別好,至少沒有sas方便。
matlab用於建模比較多。
Python 在前期處理大數據上優勢很多,sas處理Gb數據已經很慢了,而python的numpy包可以幾秒內批量處理完操作。此外 python的regular expression感覺也比sas的re要好用一點。
綜上所述, sas作為醫藥數據分析界的一把手,從界面設計到編程語言還是很人性化的,推薦使用!如果數據很大推薦使用python做前期cleaning!感謝評論區指正,我們完善了內容,也歡迎更多朋友一起討論~
屬性來看,Python和R都是編程語言,SAS與SPSS是統計分析軟體,當然他們可以統一看做數據分析工具。從數據科學領域來說,目前Python語言和R語言的使用人數最多,二者相較,Python的未來更被看好。
Python越來越受歡迎
GitHub在「GitHub Octoverse 2017」的報告中提出,雖然JavaScript是2017年最流行的編程語言,但Python卻是近5年來增長最快的主流編程語言。
數據分析也表明,Python的流行很大程度上得益於數據科學、機器學習在各行業內的應用普及度,包括在科研院校。
kaggle近期發布了調研報告「Novice
to Grandmaster- What Data Scientists say?」,其中詳細比較了Python與R在數據科學領域的使用情況:- Python、R和SQL是數據科學家最常用的工具,其中Python的使用人數遙遙領先。
- 在Python與R的solo中,Python對數據工作的【不可或缺】獲得了64.6%的認可,R的可替代性更加明顯。
- 同時在給新手的建議中,91.6%的Python用戶推薦Python作為新手入門語言,但僅有67.2%的R語言用戶推薦R作為入門。
Python語言優勢
- R在統計方面表現突出
R是專註於提供更好和更人性化的方式做數據分析、統計和圖形模型的語言。
其主要優勢在於有一個龐大的社區,通過郵件列表,用戶貢獻的文檔和一個非常活躍的堆棧溢出組提供支持,具有包羅萬象的統計函數可以調用。
R比較突出的問題在於學習瓶頸多,以及數據量過G的情況下運行速度較為緩慢。
- SAS與SPSS的應用
SAS是由美國NORTH CAROLINA州立大學1966年開發的統計分析軟體,能夠將數據存取,管理,分析和展現有機地融為一體;SPSS是世界上最早的統計分析軟體,操作簡便,編程方便。
@風雨人生路 指出,SAS、SPSS在石油、製藥、電力等行業運用廣泛,在互聯網公司運用較少,確實存在這樣的應用現狀。從這個層面來說的數據分析工作使用語言的選擇,依賴於【個人的職業規劃】,傳統或者諮詢公司更適合SASS,金融特別是銀行業SAS很受歡迎。
- Python語言優勢
Python其實是種高級動態編程語言,由Guido van Rossum於1991年創建發行。
Python支持調用龐大的第三方庫,能夠處理海量數據。該語言注重簡潔、易讀性高、可拓展性強,將創建者「優雅、明確、簡單」的設計理念完美貫徹到底,應用範圍也從Web開發到數據科學再到DevOps不等,具有廣泛的應用性。
從入門學習成本來說,Python語言語法清晰,概念相對簡單,更易上手。
在數據科學領域,Python可以很好的支撐商業分析(探索性分析、數據可視化)、機器學習(數據清洗、演算法建模)、深度學習(神經框架搭建)等場景。
對於有志於人工智慧,欲在機器學習和深度學習上深潛的同學,從Python入手不失為捷徑。
數據分析工具的效率需求
隨著數據科學與人工智慧的發展,讓數據工作者的工作集中在「數據分析」本身,是我們思考的方向。
我們看到:
- 海量數據的挖掘是數據科學發展的大勢所趨
- 傳統的傳統的集成開發環境(IDE)正被取代,互動式編程讓數據分析過程便捷高效
科賽 Kesci設計的K-Lab基於Jupyter
Notebook的在線數據分析服務,延續採用互動式編程的設計方法,將實時運行的代碼、敘事性的文本和可視化被整合在一起,讓數據分析整個過程與結果統一。K-Lab是款在線數據分析協作平台,已經集成了Python3、Python2、R三種主流編程語言環境,同步內置100+常用數據分析工具包。用戶完成登錄後,可以直接在雲端開始編程,開展海量數據分析。
自己用過R和python的numpy庫,大公司數據崗,現在基本用R的說一下原因。
1.單機部署容易度,R略強,R不需要裝eclipse了(開個玩笑)。基本差不多,但相對方便,安裝庫不用自己從網上下載,直接一個install.packages的命令就行,而python要自己找,有的時候很累。
2.文件讀取速度,R更強,不知道前幾名說R文件速度慢是怎麼得來的。親自測試1gb數據下R的read.csv和python自己寫for的readln,python的用時可以讓R把這文件再讀幾百次以上…我一直很少用python的原因就是,經常碰到GB數據,python讀取太慢…再說一個R的文件加速行為,R可以把數據在內存的情況存為Rdata的鏡像文件,python我不知道怎麼加速保存和讀取,存csv肯定慢…
3.性能:我覺得R更強,有人說python的numpy速度快,我實際上還是沒看出來…那出一個殺招並行怎麼弄?R的並行用doParallel就行,python難道要生成exe再自己寫n個批處理,生成結果後再讀取繼續計算?這當中斷檔和性能損失就不說了…最主要是編程是斷檔的,累不…
4.易用性:聚類,bp神經網路,基因遺傳等等很多演算法都直接調用R的庫就行,性能好還不用自己寫。唯一略弱的應該是類吧,目前用R6來寫感覺有時候配上並行包會有問題。
5.發布上:R唯一的缺陷就是不能發布,只能傳遞腳本,不像python能生成exe…這個可能是編程語言和統計語言的本質區別吧…
mark,有更新再來,不想大家走彎路,歡迎提問~說一下我使用的R 和 SAS, R 非常強大的包的拓展在統計上很好用,基本上你需要的內容(基礎)都可以勝任,改寫也比較方便,不過比起自己重寫函數,基於本科用了四年matlab, 我更傾向於後者。SAS我是研究生之後才涉及的,雖然課程上學習的SAS感覺和R比沒什麼優勢,但是一旦做到金融方面上10G的數據,用R就死給你看了。況且我也不是一個CS很精通的人,好多演算法都沒有系統學過,畢竟主攻的是統計建模一塊,所以寫出的R的code效率沒有SAS高是非常正常的。但是呢,平時比較喜歡做simulation, 在這樣的前提下,我傾向選擇R,甚至MATLAB或C。而SAS在固有的方法上效率很高,但寫點稍微複雜的likelihood function, 馬上就凸顯計量經濟學那撲面而來的土豪氣息了,這個不會求導,那個識別不認,誒,改寫是致命傷啊!至於python,沒用過,不好評價。第一次作答,手機碼字,求輕拍。
Python有替代MATLAB做數據處理、分析的勢頭;
Python和R相比在統計上還是欠缺不少的。R上很多開源統計包和軟體Python上暫時找不到好的替代,比如做bioinf的Bioconductor。SAS一般給藥廠人用的比較多,因為基於FDA認證這層關係,其它軟體的功能和效用上並不能很好地代替它。SPSS一般是做普通的社科統計用的,只需要會滑鼠點擊、設置相應參數即可。再說性能。Python的性能不錯,開發速度快,很容易做出數據量稍大,比如上GB情況下的Demo。這一點R和Matlab是略困難的。注意我的機器是24核96G RAM下談的,普通筆記本更不能奢望能直接用MATLAB和R挑戰GB以上的原始數據。光是Parsing就很慢。
針對超大數據集,開源的Python、R都有自己的解決方案,比如Rhadoop或者GPU包。SAS貌似也有支持,MATLAB略困難。SPSS沒有這方面支持。最後強推一下慢慢崛起的Julia language。麻理精品。問題:Python 在數據分析工作中的地位與 R 語言、SAS、SPSS 比較如何?答:剛學了Data Mining Machine Learning這門課,老師屬於比較牛的,所以我們也學了點入門,R語言不了解所以這裡就不說了。 Python是一種面向對象,解釋型的語言,可以兼容大把的其他程序語言,同時在字元串處理上很給力,也就是很多人為什麼用它做為大數據處理的語言,這裡百度百科裡都有描述,老師說這門語言可以做為入門知識學學。 SAS、SPSS 就是2個數據分析軟體,有本數據挖掘寶典,電子工業出版社的,當時做為輔助教材,我們學習了SPSS這個軟體,現在做個比較:(內容來自網上和學習中) SAS Enterprise Miner :SAS完全以統計理論為基礎,功能強大,有完備的數據探索功能。但難以掌握,要求高級統計分析專業人員,結果難以理解。價格極其昂貴。
SPSS Clementine:一個開放式數據挖掘工具、資料探勘工具。不但支持整個數據挖掘流程,還支持數據挖掘的行業標準--CRISP-DM。相對於SAS易於掌握,要求有一定的統計分析基礎。缺點無中文支持。
所以我們在數據挖掘和機器學習這門課里就學了Python(開發語言)和SPSS(軟體),還有大把的理論和噁心人的演算法~(至今能記起來的沒多少了。。)!
參考教材
《大話數據挖掘》 故事型介紹了數據挖掘的概念和應用範圍,作為了解數據挖掘非常好用;
《數據挖掘導論 Introduction to Datamining》第三版英文版,課程參考書;
《數據挖掘原理與SPSS Clementine應用寶典》這本是參考書,寶典系列的書對計算機的同學們來說都是比較給力的啊,可惜就是又長又難。。
參考個人經歷來看,學校中基本就是用R,很少會用到Eviews,stats等軟體。作為開源的統計分析軟體,R的包更新很快,各種前沿的經典的包應有盡有。
在實際工作中,基本都是SAS。大藥廠一般只認SAS的結果,畢竟是FDA認證的。但是SAS太貴了,有時候公司也受不了,就會R和SAS混在一起用。。。。當然最終結果還是要用SAS來出。Python我是初學者,因為考慮到處理大數據R和SAS都不是強項,想從這方面嘗試下。剛才在瀏覽上述各個答案時冒出了一個用python來優化現在處理MCMC過程太慢這個念頭,希望幾個月後可以來更新~Spss是比較傻瓜化的那一種如果你只是想要一些結果,可以選用。SAS和R都比較擅長統計、不過需要一定的數學基礎和編程、Python很有以後成為編程語言一哥的軟體、比較全、可以多學一下。
詳情請看url
SAS vs. R (vs. Python)本科統計在讀,大一學校教spss(其他非統計專業也學),然而一直沒有用過,大三開sas專業課,另有時間序列一門要求r,但是沒有系統叫。個人憑興趣自學了r,又有信管系的同學推薦python目前正在入門中。談一些個人理解,r主要適合統計系,在數據分析的作用較大,作圖能力也絲毫不比python弱,但是編程能力稍弱,沒有python強大。做數據分析入門首選r,國內大部分資料都是從國外翻譯過來的,其中關於r的資料很多,學習成本較低,後續可以涉及python,需要注意的是,python適合不同方向的人,看自己的定位在哪裡。
眾所周知,Python的興起是最近幾年,大數據的興起,成就了Python,周圍的朋友也有人學習Python,在慢慢轉型,說明Python的必然性。
能夠用來做統計分析語言程序有很多,Python、SAS、SPSS僅是冰山一角,來看下他們各自的特點:
Python:簡單易學、可移植、開源、可嵌入,豐富的庫
R:免費軟體、可以菜單操作,一般都需要二次開發
SPSS: 簡單,菜單操作,不利於二次開發
SAS:要購買,輸入語言要非常精準,易出錯,難操作
Python主要應用於數據科學、工程領域,擅長數據分析,R主要應用在學術界,個人比較看好Python,Swift、Go、Julia與R ,Python將是最終的王者
就自己了解的幾種語言的特性加以分析:
基礎數據模板,
C++,Java都沒有原生的N維矩陣數據模板類,因此對應這類數據的所有處理都要構建,而目前大多數的機器學習,深度學習演算法都是在N維矩陣的各類操作,代碼量就會大幅增加
sas與matlab幾乎所有的數據集都以N維數據模板為基礎,大多數的function,計算用的packge是也是針對這個數據模板操作,因而整合性優異很多,穩定性隨之提高
R與python正好介於之間,R的基礎數據模板類便於統計類function,因此寫統計類的包都相對容易,但超出這個範圍,就沒有那麼靈活。Python起初也不是為數據計算設計的,但它的更底層能很好「粘合」各類基於C的庫,上層又表現為lisp等函數化的便攜操作,因此numpy,scipy等一系列科學計算包(大量的C與Fortran)完善了python在這個領域的優勢
基礎類特性,
C++,Java基於OO而生,因此這方面的優化,類的各種特性、變化自由度都很大,GUI,web以及工業級應用各類場景很成熟,也有全面的安全與版權保護機制。困難之處就是從頭造所需的團隊組織規模要求高,在過去開源社區還不壯大時,只有大型企業可以負擔
sas與matlab可稱為封閉商業軟體,用戶只能使用固有的類屬性與操作,因此自由度受到了最大的限制,新功能只能等待版本升級,但穩定性與可靠性得到最大保障
R與python好像也是介於之間,R的基礎數據模板有限,對類的屬性支持也不是特別重示,因此還只能局限在統計方面的應用。Python的底層經過多次的優化,包括大版本2.0與3.0的分割,都是為了能更好的包容各個基類的新特性,而這些特性也促使了包括科學計算社區在內的所有python社區在各個領域都有飛速的擴展,比如web領域的各類框架,伺服器領域的用於分散式的隊列及管理等。而深度學習也是需要軟硬體的大範圍的整合,演算法的靈活變化,分散式數據IO控制,網路傳輸與GUI動態展示,類的多樣性以及擴展性才能更好的支持,也是python能立於深度學習領先陣營的核心原因
只想問,學習這些到哪兒學,買什麼書!
SAS處理GB級的速度很慢是什麼意思?這個黑的有點奇怪。費用貴是真的。SAS處理大數量還是可以的。倒是看群裡面的娃子吐槽python的速度不行。
sas商用較多,r和python屬於開源的,在正式場合比較少用,畢竟是開源的。
推薦閱讀:
※時間序列建模問題,如何準確的建立時間序列模型?
※面對有大量缺失值的數據應該怎樣處理比較合理?
※如何零基礎學習 R 語言?
※R語言數據可視化的包,除了ggplot2,recharts,shiny等包外,還有哪些很值得推薦的包?
※如何使用 ggplot2 ?