做數據分析里有哪些Python能做,而MATLAB不能做的?

本人對MATLAB用的比較熟, 經常聽別人推薦Python, 在猶豫要不要學, 比較學習一門新語言,是有時間成本的。

如果做數據分析,有哪些Python能做,而MATLAB不能做的?


我個人會一些 Python 和 MATLAB,我主要使用 C++ 實現智能演算法來進行數據分析。就我所知,這些語言都能勝任所有的數據分析任務,區別無非就是難易程度;你所需要的做的是儘可能的使用你已經最為熟練的語言,並且把精力專註於理論、演算法和實際建模上。

是的,基本上什麼語言都可以實現智能演算法;智能演算法本身只和相關理論、演算法設計與實際建模有關,和具體語言無關。但是不同的語言,由於其提供的工具包不同,導致實現演算法的難易程度有別。就我所知,MATLAB 和 Python 在數據分析這個領域提供的數據包幾乎一樣多,都很全。所以我建議你繼續加強你自己熟悉的 MATLAB,有時間感興趣的話,可以考慮嘗試學習 Python。

如果你真的想從事人工智慧、數據挖掘這個大領域,我建議你把精力從最基礎的編程語言提高到對其基本原理、演算法設計和實際建模上來。這樣可能更有裨益。學會了這三樣,哪怕用 C++ 這種類庫少的可憐的語言,你都能很輕鬆的完成數據分析。反過來,假如你不熟悉這些,只會用工具包跑一個結果的話,你不僅對方法不甚理解,更可怕的是你可能並沒有依據具體問題進行建模;這樣的結果,只能是一種不太入門的水平。這是我的看法。

PS: 看了大家的答案,我覺得我的回答局限在數據分析核心演算法這個層面上;如果需要完成一個從頭到尾的數據分析系統,必然如 @路強 所說的,Python 會更勝一籌。但我還是要強調核心演算法在完整的數據分析系統中也是重中之重這一點,所以我還是極力建議提高對方法本身的理解。


例子很多,看你的具體應用,python骨子裡是萬能語言,matlab骨子裡是矩陣運算,在通用的語言功能方面有先天不足,比如樓上說的字元串處理,matlab能做但肯定不如python用著舒服,如果你還要做中文分詞、自然語言處理可能會更麻煩了。

硬要舉例子,那我也可以舉一個,我需要:

1. 在aliyun上布一個分散式爬蟲每天定時上網抓數據,然後完成數據的清洗和入庫。有入postgressql的,有入mongodb的。

2. 因為sql數據可能會更改數據結構,所以我還要用orm的方式對資料庫表結構的更改做版本管理。

3. 整理完的數據我要用一定的模型進行分析,然後動態生成一些圖表。

4. 我要做一個動態網頁將相關的數據以及分析的圖表展現出來。

上述工作(以我對matlab的了解)matlab只能完成第3步,而python全都可以做,並且往aliyun上安裝個盜版(我當然買不起正版)的基於linux的matlab想想也挺蛋疼的,當然如果你的需求僅僅是第3步,你完全可以用matlab。

---------------------------------------------------------------------------------------------------------------------------------------

ps:我不知道生產環境下有多少真正用matlab做數據分析的,但知道python用得真挺多,用到生產環境下的話你必然要考慮matlab的成本問題。所以題主如果是想從事數據分析這個行當而不是僅僅為了搞科研,建議還是要學習一下python這種免費的語言,儘管python可能在數值型的數據分析方面不如matlab庫多,但是python能勝任的事情真的會更多,從數據抓取、清洗、整理、分析一直到展示都可以只用一種語言,並且python真得學起來挺簡單。

這裡沒有黑matlab的意思,我從98年就開始用matlab,幫助我完成了很多個項目,對其還是有好感的,做數據處理確實是能大幅度提升開發效率。離校後用得越來越少,下盜版太不方便了,並且在自己機器上裝這麼個使用頻率不高的龐然大物的慾望很低。而python,任何一個linux發行版都自帶,再隨便裝上一兩百兆的工具就可以幹活了。


如果別人為你預處理數據,那好很多。自己爬數據,或者轉換格式Python加標準或第三方庫舒服很多


距離上次提問有將近一年時間了,根據自己的實踐,自問自答一下。

1 數據清洗,數據預處理方法,Python的pandas完爆MATLAB啊。

2 機器學習方法,Python的scikit太好用了,MATLAB在這方面演算法少,而且優化超參要一層一層循環,而scikit-learn一兩句搞定。

3 深度學習方法,Python有的theano,keras,lasagne等等,而MATLAB這方面的庫幾乎沒有,找到的一個,還停止維護了,還建議使用Python的庫。。。

4 感覺MATLAB相比Python最明顯的優勢是它的IDE,調試很方便,文檔很全。


MATLAB 完全做不了的應該很少,只是多數時候 Python 更容易,比如讀取 sqlite 資料庫,寫 GUI 程序,需要與操作系統交互的場合,IronPython 與 COM 的交互,或者在 MATLAB 里需要把 for 改成 parfor 然後發現公司沒有買 parallel toolbox 的時候……

一句話吧:Python 有 import 大法,這個 MATLAB 有點難……

好吧,除了讀資料庫方便和並行計算不需要購買,其他幾項並不是數據科學裡必須的……


MATLAB操作字元串很不爽,雖然貌似也都能幹。

這樣在做生物信息學這種需要頻繁操作字元串的工作的時候,就會很不爽。

我周圍基本沒有拿MATLAB做生信的,雖然它有這個包。


matlab很多不能做/做不爽啊 比如說 數據存在mongodb里

會干擾到生產環境資料庫選型的話matlab就不應該出現嘛


有很多問題想跟樓主您討論一下 請問您現在對matlab還有掌握吧?matlab分詞用什麼演算法 自帶的還是需要自己編寫


推薦閱讀:

如何看待 MATLAB R2015a 開始支持調用 Python?
Python如何調用Mathematica進行計算並返回結果?

TAG:Python | MATLAB | 數據分析 |