本文由 伯樂在線 - HanSir 翻譯,toolate 校稿
英文出處:Quora
【伯樂在線導讀】:這個問題來自 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日。