113
Python
為什麼說 Python 是數據科學的發動機(一)發展曆程(附視頻中字
CDA字幕組 編譯整理
本文為 CDA 數據分析師原創作品,轉載需授權
毋庸置疑,Python是用於數據分析的最佳編程語言,因為它的庫用於存儲、操作和獲取數據的洞察力。
在PyData Seattle 2017中,Jake Vanderplas介紹了Python的發展曆程以及最新動態。在這裏我們把內容分成上下兩篇,先給大家帶來上篇--Python的發展曆程。
主講人:
Jake Vanderplas是華盛頓大學eScience研究所物理科學研究的負責人。該研究所負責跨學科項目,旨在支持科學領域在數據方麵發現。Jake的研究領域包括天文學、天體物理學、機器學習以及可伸縮計算。此外,他是許多開源Python項目的維護者和頻繁貢獻者,包括scikitl-learn、scipy、altair等。
CDA字幕組該講座視頻進行了漢化,附有中文字幕的視頻如下:

針對不方麵開視頻的小夥伴,CDA字幕組也貼心的整理了文字版本,如下:
(文末有彩蛋! )
Python究竟是怎樣成為了數據科學的發動機?考慮到一開始它的初衷並非如此。
Python的發展曆程
我想回顧一下Python的初衷和早期發展情況。
1990s: 腳本時代
在上世紀90年代,我認為Python以及數據科學處於腳本時代。這時的座右銘為"Python是Bash的替代品”。
沒有人願意用Bash編程,那麼讓我們換成用Python吧。這就是我們90年代的情況。
當時有個從事科學領域的人,名叫David Beasley。你可能通過《Python Cookbook》一書熟知他。在90年代他在一個研究實驗室工作。他寫了一篇關於使用Python進行科學計算的文章。
在當中他說“科學家正在使用各種不同的工具,他們傾向於使用自行開發的軟件,來實現自己的特定領域語言。或者用命令行界麵將它們組合到一起。”
在本文中他提出,為什麼我們不使用Python把這些都組合到一起呢?
他提出一個他已進行了4年的案例研究,當中他把Python作為膠水,把許多其他的工具都粘到了一起。他寫這個庫在當時影響力非常大,SWIG(simplified wrapper and interface generator)。這能夠解析整個Fortran或C代碼,為你生成一個Python接口。因此為了驅動代碼,你不必再去編寫Fortran和C語言。
許多早期的SciPy PI Data工具都是建立在SWI上的,我對scikit-learn的第一個貢獻是用SWIG包裹的C++代碼。之後我們不再用SWIG而轉為Cython,但這是另一回事了。
2000s: SciPy時代
之後是2000年,我認為2000年代是SciPy時代。這時的座右銘是,Python是MATLAB替代品。
我看到觀眾中有些點頭讚同,當中有很多原因。如果看到2000年代早期,那些有影響力並且發展SciPy堆棧的人群,可以在他們身上看到一些共同點。
例如John Hunter是Matplotlib的創始人,在2012年他去世前的幾周,他發表了很棒的SciPy演講。
當中他談到了Pre-Python,他有各種工作進程的大雜燴 Perl腳本 C++。他編寫了MatLab 之後他厭倦了MatLab,開始把東西加載到GnuPlot上。這啟發他編寫了Matplotlib,這基本上是用Python編寫的MatLab替代品。
同樣還有Travis Oliphant。他創建了continuum,在這之前他編寫了Numpy和SciPy項目。
他說“在Python之前,我用過Perl。然後是Matlab、shell、scrip、Fortran以及C++庫等。當我發現Python時,我真的很喜歡這個語言。但這個語言是萌芽階段 缺少很多庫。 我認為我可以通過在Python中,連接低等級的庫和高等級的usage。從而在世界中獻出自己的一份力量。”這啟發了SciPy,SciPy取代了Matlab、Fortran、shell、scrip。
同樣的如果你熟悉IPython項目、Jupyter項目,那你肯定知道Fernando Perez,他創建了IPython。他也有類似五花八門的工具,C、C++、Unix(awk/sed/sh)Perl、IDL、Mathematica。想到Python出現之前的科學就很可怕。他創建了IPython項目,他想在Python中做類似IDL或類似Mathematica,以便他能夠用一個簡單的工具代替這所有。
在21世紀初出現了各種工具,相同的目標是想取代Matlab取代所有組合的包。若看到早期的代碼,會發現它們都包括可視化、計算以及殼的內容。如果看一下matplotlib,你仍然可以導入M、lab的子模塊。類似計算周期等部分,在Matlab或者matplotlib中仍然有計算,盡管現在很多以及被移除。
如今我們知道的庫如matplotlib、SciPy、IPytho它們的目標很清晰。社區一直在演變。
我認為在SciPy時代的關鍵會議是SciPy大會。SciPy大會驅動了很多創新力,從2002年一直到如今。在場我認識的幾個人將出席下周的SciPy在奧斯汀的會議,這是非常有意思的會議,如果有機會的話我建議你們參加。
2010s: PyData時代
在20世紀90年代腳本時代和SciPy時代之後,我認為2010年代是PyData時代。這時的座右銘應為"Python是R語言的替代品”。
我認為PyData社區在這點上做的很好。R語言還是有些做的很好且無法超越的地方。我認為其中一個常規數據統計,還有一個是可視化。有些人在致力於解決這些問題。
我認為PyData時代的代表是Wes McKinney,以及他的panda包。還有他的書《利用Python進行數據分析》。
在書的序言中他這樣說道“還沒有任何一種工具能夠很好的處理我的一些需求。例如:具有標記軸的數據結構;綜合時間序列功能;算術運算和減少;缺少數據的靈活移交;合並和其他相關操作,我希望最好能夠在一種語言中完成這一切。”
且能夠符合軟件開發的一般用途,這啟發了panda的誕生。可以說若沒有panda庫,沒有Wes,今天我們不可能坐在這裏。在2009〜2011年的時候,他辭掉了本來的工作,吃了2年拉麵這樣他就可以天天編寫panda。如果你有天碰到了Wes,請感謝他。因為他真的對我們的社區做出了重大貢獻。
還有許多其他的關鍵軟件這個時代問世。
Panda的第一個重大的發布是在2011年左右。scikit-learn在07年有發布一個早期的指南,但主要的scikit-learn發布於2009年或201年。Conda的packaging發布於2012年,這真的改變了我使用Python的方式,改變了人們做事的方式。以及2012年的IPython項目,後來更名為Jupyter。Jupyter項目真正推動了我們處理代碼的方式,特別是在這個社區中。
當然當中關鍵的會議是PyData。2012年的PyData研討會為期一天在穀歌舉行,位於山景城,這是我影響深刻的一次會議。因為這是我第一次公開發表Python演講,當中我進行了1小時關於scikit-learn的講解。從那之後我就著迷了,想盡可能多的參加這個會議。2012年後PyData確定了標誌,之後就一直沒變過。
PyData遍布世界各地,這一係列會議促進了數據科學的發展。數據科學與數據計算是不同的,之前SciPy時代則是圍繞這點的。當然以上這些時代都是同時存在的。有人使用Python寫腳本,有人使用SciPy工具,有人使用PyData。通過這種方式能夠整理出,我們是如何走到今天這一步。以及幫助你了解工具是怎樣發展到今天的。
最重要的主題是,人們想使用Python。由於Python的直觀性、美感、哲學性以及可讀性。Python從其他語言中得到很多轉換,因為它編寫起來很有趣。因此人們做的就是結合其他工具,其他社區中習得的內容、
編寫相應的Python包。
Wes專門寫了Panda,因為他想做到R語言對數據框的操作。John Hunter專門寫了matplotlib,因為他想用Matlab的方式進行繪製,但不必使用Matlab許可證。
Python真的很擅長從其他工具其他領域攝取知識,並把它們轉換到自己的空間內,然後進行運行。
我們還開發了很多自己的東西,例如scikit-learn。在任何語言中,這都是考慮機器學習的首要方式。至少是如何連接機器學習,如何進行機器學習API。我認為沒有其他語言比scikit-learn更簡潔,更深思熟慮的。
但我們必須認識到在整個過程中,Python並不是數據科學語言。
Python是通用語言,我認為Python的通用本質在於其優勢。你可以把它Python想象成瑞士軍刀。
使用Python你可以做各種不同的事情。比如你可以做網頁編程,可以進行Django,可以做後端,也可以做前端。
但多年來越來越多的人都在用Python,這把瑞士軍刀變得複雜起來了。這麼多的工具,我們需要選擇用哪個記住順序,從而你能找到你想要的。這裏的優勢在於Python存在巨大的能力空間,但缺點在於從哪兒下手。
我想強調的是對於剛接觸Python的人群,他們說"我想馬上開始學習Python”。但是他們會發現,宇宙是如此巨大,有那麼多的包,有許多需要學的東西。還有許多人們傳遞的未記錄下來的知識,很難進入其中。
在了解了Python的發展曆程之後,我們將帶來最新的發展動態,以及介紹熱門的一些庫,敬請期待哦。
CDA字幕組召集令
CDA數據分析師旗下的CDA字幕組開始招募啦!
我們發掘了一批優質的數據分析視頻,隻要你有責任心有時間,有一定的英文翻譯、聽譯能力,最重要的是熱愛數據分析,那麼就來加入我們吧!
申請報名
最後更新:2017-10-10 21:06:52