為什么數(shù)據(jù)科學(xué)家們選擇了Python語(yǔ)言
Python是一種解釋型呜投、動(dòng)態(tài)語(yǔ)言饶号,具有明確而高效的語(yǔ)法纯趋。Python具有良好的REPL(Read-Eval-Print Loop俏蛮,‘讀取-求值-輸出’循環(huán))桐猬,還可以通過(guò)dir()和文檔字符串從REPL中開(kāi)發(fā)新模塊麦撵。這是程序員更偏向于Python而不是C、C++或Java的 一個(gè)原溃肪。
Python社區(qū)于90年代中期投入精力開(kāi)發(fā)了Numeric免胃,它是“Python的一個(gè)擴(kuò)展,以使其像Matlab那樣自然地支持?jǐn)?shù)值分析” 惫撰。Numeric后來(lái)演變成為NumPy羔沙。幾年后,Matlab的繪圖功能通過(guò)matplotlib庫(kù)被移植到Python中厨钻《蟪科學(xué)計(jì) 算的庫(kù)圍繞NumPy和matplotlib建立,并打包成SciPy包夯膀。Python在類(lèi) Matlab的數(shù)組操作和繪圖功能上的支持诗充,是它比Perl和Ruby更受到青睞的主要原因。
除了前面提到的把 Matlab的特性移植到Python的工作外诱建,近期的工作已經(jīng)把一些R和Mathematica中流行的特性移植到了Python蝴蜓。
R語(yǔ)言中的數(shù)據(jù)框和相關(guān)操作(來(lái)自plyr和reshape包)已經(jīng)由pandas庫(kù)實(shí)現(xiàn)。scikit-learn項(xiàng)目呈現(xiàn)了許多機(jī)器學(xué)習(xí)算法的通用接口,類(lèi)似于R中的caret包茎匠。
Mathematica/Sage中“notebook”的概念已經(jīng)由IPython notebooks實(shí)現(xiàn)格仲。
更詳細(xì)的內(nèi)容可以參考:python.jobbole.com/81039/
為什么數(shù)據(jù)科學(xué)家們選擇了Python語(yǔ)言?
http://www.quora.com/Why-is-Python-a-language-of-choice-for-data-scientists
Python是一種解釋型汽抚、動(dòng)態(tài)語(yǔ)言抓狭,具有明確而高效的語(yǔ)法。Python具有良好的REPL(Read-Eval-Print Loop 造烁,‘讀取-求值-輸出’循環(huán))否过,還可以通過(guò)dir()和文檔字符串從REPL中開(kāi)發(fā)新模塊。這是程序員更偏向于Python而不是C惭蟋、C++或Java的一個(gè)原因苗桂。
Python社區(qū)于90年代中期投入精力開(kāi)發(fā)了Numeric,它是“Python的一個(gè)擴(kuò)展告组,以使其像Matlab那樣自然地支持?jǐn)?shù)值分析”[1]煤伟。Numeric后來(lái)演變成為NumPy[2]。幾年后木缝,Matlab的繪圖功能通過(guò)matplotlib庫(kù)被移植到Python中[3]便锨。科學(xué)計(jì)算的庫(kù)圍繞NumPy和matplotlib建立我碟,并打包成SciPy包[4]放案,這在商業(yè)上由Enthought支持[5]。Python在類(lèi)Matlab的數(shù)組操作和繪圖功能上的支持矫俺,是它比Perl和Ruby更受到青睞的主要原因吱殉。
如今,對(duì)數(shù)據(jù)科學(xué)家來(lái)說(shuō)厘托,Python最流行的替代品是R友雳、Matlab/Octave和Mathematica/Sage。除了前面提到的把Matlab的特性移植到Python的工作外铅匹,近期的工作已經(jīng)把一些R和Mathematica中流行的特性移植到了Python押赊。
R語(yǔ)言中的數(shù)據(jù)框和相關(guān)操作(來(lái)自plyr和reshape包)已經(jīng)由pandas庫(kù)實(shí)現(xiàn)[6]。scikit-learn項(xiàng)目[7]呈現(xiàn)了許多機(jī)器學(xué)習(xí)算法的通用接口包斑,類(lèi)似于R中的caret包考杉。
Mathematica/Sage中“notebook”的概念已經(jīng)由IPython notebooks實(shí)現(xiàn)[8]忆谓。
以我個(gè)人的觀(guān)點(diǎn)膏燕,Python仍然在一些重要領(lǐng)域有所欠缺果录。
1. 首先是Python在數(shù)組操作和公式設(shè)定上的語(yǔ)法相對(duì)更加繁瑣。Matlab/Octave在數(shù)組操作上的語(yǔ)法仍更受青睞(例如丸卷,這是它被斯坦福大學(xué)機(jī)器學(xué)習(xí)課程所采用的原因),而R語(yǔ)言在公式設(shè)定上的語(yǔ)法相當(dāng)不錯(cuò)询刹。
2. 再者就是靜態(tài)圖形庫(kù)ggplot2與交互式圖形庫(kù)D3的對(duì)應(yīng)Python庫(kù)谜嫉。matplotlib庫(kù)既不易安裝萎坷,又難以使用,還不容易建立用于web的交互式圖形沐兰。
3. 第三就是NumPy和pandas庫(kù)在處理大數(shù)據(jù)集時(shí)的可擴(kuò)展性哆档。Continuum公司正致力于解決這個(gè)問(wèn)題,但距離創(chuàng)造出一些連貫又可用的東西還有很長(zhǎng)的路要走住闯。
4. 第四是缺乏一個(gè)類(lèi)似于LINQ項(xiàng)目的瓜浸、用于數(shù)據(jù)操作的嵌入式、聲明式語(yǔ)言比原。Pandas作為一個(gè)低層次的數(shù)據(jù)操作工具箱來(lái)說(shuō)很有用插佛,但是跟蹤復(fù)雜操作的專(zhuān)用Pandas語(yǔ)法會(huì)令人沮喪。
5. 最后是對(duì)數(shù)據(jù)科學(xué)家來(lái)說(shuō)缺乏一個(gè)像R Studio一樣高品質(zhì)的IDE量窘。
參考資料:
[1]http://hugunin.net/story_of_jyth…
[3]http://matplotlib.sourceforge.net/
[8]http://blog.fperez.org/2012/01/i…
寫(xiě)于2012年8月29日雇寇。