為什麼資料科學家們選擇了Python語言?

HanKai發表於2015-02-06

這個問題來自 Quora,題主還補充說,“似乎很多搞資料的程式設計師都挺擅長 Python 的,這是為什麼呢?”下面是 Jeff Hammerbacher 的回覆。(693 贊)


Python是一種解釋型、動態語言,具有明確而高效的語法。Python具有良好的REPL(Read-Eval-Print Loop ,‘讀取-求值-輸出’迴圈),還可以通過dir()和文件字串從REPL中開發新模組。這是程式設計師更偏向於Python而不是C、C++或Java的一個原因。

Python社群於90年代中期投入精力開發了Numeric,它是“Python的一個擴充套件,以使其像Matlab那樣自然地支援數值分析”[1]。Numeric後來演變成為NumPy[2]。幾年後,Matlab的繪圖功能通過matplotlib庫被移植到Python中[3]。科學計算的庫圍繞NumPy和matplotlib建立,並打包成SciPy包[4],這在商業上由Enthought支援[5]。Python在類Matlab的陣列操作和繪圖功能上的支援,是它比Perl和Ruby更受到青睞的主要原因。

如今,對資料科學家來說,Python最流行的替代品是R、Matlab/Octave和Mathematica/Sage。除了前面提到的把Matlab的特性移植到Python的工作外,近期的工作已經把一些R和Mathematica中流行的特性移植到了Python。

R語言中的資料框和相關操作(來自plyr和reshape包)已經由pandas庫實現[6]。scikit-learn專案[7]呈現了許多機器學習演算法的通用介面,類似於R中的caret包。

Mathematica/Sage中“notebook”的概念已經由IPython notebooks實現[8]。

以我個人的觀點,Python仍然在一些重要領域有所欠缺。

1. 首先是Python在陣列操作和公式設定上的語法相對更加繁瑣。Matlab/Octave在陣列操作上的語法仍更受青睞(例如,這是它被史丹佛大學機器學習課程所採用的原因),而R語言在公式設定上的語法相當不錯。

2. 再者就是靜態圖形庫ggplot2與互動式圖形庫D3的對應Python庫。matplotlib庫既不易安裝,又難以使用,還不容易建立用於web的互動式圖形。

3. 第三就是NumPy和pandas庫在處理大資料集時的可擴充套件性。Continuum公司正致力於解決這個問題,但距離創造出一些連貫又可用的東西還有很長的路要走。

4. 第四是缺乏一個類似於LINQ專案的、用於資料操作的嵌入式、宣告式語言。Pandas作為一個低層次的資料操作工具箱來說很有用,但是跟蹤複雜操作的專用Pandas語法會令人沮喪。

5. 最後是對資料科學家來說缺乏一個像R Studio一樣高品質的IDE。

參考資料:

[1] http://hugunin.net/story_of_jyth…
[2] http://numpy.scipy.org/
[3] http://matplotlib.sourceforge.net/
[4] http://www.scipy.org/
[5] http://www.enthought.com/
[6] http://pandas.pydata.org
[7] http://scikit-learn.org
[8] http://blog.fperez.org/2012/01/i…
[9] http://continuum.io/

寫於2012年8月29日。

相關文章