大數據文摘作品,作者:Igor Bobriakov,編譯:朱璇、衛青、萬如苑
導讀:隨著近幾年Python已成為數據科學行業中大火的編程語言,我們將根據以往的經驗來為大家總結一下數據科學家和工程師幾個最實用的python庫。如果你是正在學習Python的學生,也許根據這個表單能夠幫你更好地找到學習的重心。
因為所有的python庫都是開源的,所以我們還列出了每個庫的提交次數、貢獻者人數和其他一些來自Github可以代表Python庫流行度的指標。
核心庫
1. NumPy(Github提交次數:15980,貢獻者人數:522)
在用Python處理科學任務時,我們常常需要使用Python的SciPy Stack。SciPyStack是一個專門為用Python處理科學計算而設計的軟件集(注意不要把SciPy Stack和SciPy庫搞混啦;SciPy庫只是SciPy Stack的一部分)。 讓我們來看看SciPy Stack里面都包括什么:SciPy Stack其實相當龐大,包括了十幾個庫。其中NumPy庫是它的核心庫(特別是最重要的幾個庫)中的明星。
NumPy(來自NumericalPython)是構建科學計算代碼集的最基礎的庫。 它提供了許多用Python進行n維數組和矩陣操作的功能。該庫提供了NumPy數組類型的數學運算向量化,可以改善性能,從而加快執行速度。
2. SciPy(Github提交次數:17213,貢獻者人數:489)
SciPy是一個針對工程和科學庫。 再次提醒大家SciPyStack不等于SciPy庫: SciPy Stack包括線性代數、優化、整合和統計等模塊,而 SciPy庫的主要功能是建立在NumPy基礎之上,因此它使用了大量的NumPy數組結構。 SciPy庫通過其特定的子模塊提供高效的數學運算功能,例如數值積分、優化等。 值得一提的是SciPy子模塊中的所有功能都附有詳細的文檔可供查閱。
3. Pandas(Github提交次數:15089,貢獻者人數:762)
Pandas是一個簡單直觀地應用于“帶標記的”和“關系性的”的數據的Python庫。它是探索數據的完美工具,能快速簡單地進行數據操作、聚合和可視化。
“數列(Series)”: 一維數組
“數據框(Data Frames)” :二維數組
例如,當你想從這兩種數據結構中得到一個新的數據框,把一個數列作為新的一行添加至數據框,你就能得到一個如圖所示的數據框。
下面列出的只是你可以用Pandas做的事情的一小部分:
● 輕松添加或刪除數據框中的數列
● 將其他數據結構轉換為數據框
● 處理缺失的數據,比如用NaN表示它們
● 強大的高效分組功能
下圖:核心庫的Google Trends歷史記錄
圖片來源:trends.google.com
下圖:核心庫的GitHub下載請求歷史記錄
圖片來源:datascience.com/trends
可視化類
4. Matplotlib(Github提交次數:21754,貢獻者人數:588)
MatPlotlib是另一個SciPy Stack的核心庫。它是為能輕松生成簡單而強大的可視化圖標而量身定制。 MatPlotlib是一個超酷的庫,它和NumPy,SciPy以及Pandas一起使Python成為像MatLab、Mathematica這樣的科學工具的強力競爭者。
然而,MatPlotlib是一個低端庫。這意味著您需要編寫更多的代碼才能達到高級的可視化效果;換句話說,和使用其他高級工具相比,使用MatPlotlib你需要投入更多的精力,但總體來說MatPlotlib還是值得一試的。
付出一些努力,您就用MatPlotlib做任何您想做的可視化圖表:
● 線路圖
● 散點圖
● 條形圖和直方圖
● 餅狀圖
● 莖圖
● 輪廓圖
● 矢量場圖
● 頻譜圖
Matplotlib還可用來創建標簽、網格、圖例和許多其他樣式圖。基本上,一切圖表都可以通過Matplotlib來定制。
Matplotlib庫還能支持不同的平臺,并能使用不同的GUI套件來展示所得到的可視化圖表。 各種IDE(比如IPython)都支持Matplotlib的功能。
除了Matplotlib,python還有一些其他庫能讓可視化變得更加容易。
下圖:使用Matplotlib制作的圖表展示
5. Seaborn(Github提交次數:1699,貢獻者人數:71)
Seaborn主要關注統計模型的可視化,包括熱分布圖(用來總結數據及描繪數據的整體分布)。 Seaborn是基于且高度依賴于Matplotlib的一個python庫。
下圖:使用Seaborn制作的圖表展示
6. Bokeh(Github提交次數:15724,貢獻者人數:223)
還有一個強大的可視化庫叫做Bokeh,其目的是互動式的可視化。 與Seaborn不同,Bokeh獨立于Matplotlib。 如上所述,Bokeh的賣點是互動性,它通過數據驅動文檔(d3.js)風格的新式瀏覽器來呈現圖表。
下圖:使用Bokeh制作的圖表展示
7. Plotly(Github提交次數:2486,貢獻者人數:33)
Plotly是一個基于Web來構建可視化的的工具箱。它有好幾種編程語言(其中包括Python)的API,并在plot.ly網站上提供一些強大的、開箱即用的圖表。 要使用Plotly,您先需要設置您的Plotly API密鑰。Plotly將在其服務器端處理圖表,并將結果在互聯網上發布。此外,它也提供了一種不需要使用其服務器和網絡的offline方法。
下圖:使用Plotly制作的圖表展示
下圖:python可視化庫的Google趨勢記錄
圖片來源:trends.google.com
機器學習類
8. SciKit-Learn(Github提交次數:21793,貢獻者人數:842)
Scikits是SciPy Stack的另一庫,它專為某些特殊功能(如圖像處理和機器學習輔助)而設計。對于機器學習而言,SciKit-Learn是其中最突出的一個是庫。SciKit-Learn建立在SciPy之上,并大量使用SciPy進行數學操作。
scikit-learn為常見的機器學習算法設計了一個簡潔通用的界面,使得在生產系統使用機器學習變的十分簡單。 該庫有著高質量的代碼和文檔,性能高,容易使用,是使用Python進行機器學習的行業實踐標準。
深度學習類 - Keras / TensorFlow / Theano
在深度學習方面,Keras是最杰出最方便的Python庫之一。它可以在TensorFlow或者Theano之上運行。 下面讓我們來看一下它們的一些細節:
9.Theano. (提交:25870次,貢獻者:300個)
首先我們來談談Theano.
Theano同Numpy類似,是一款定義多維矩陣并含有數學運算符和表達式的Python包。通過編譯這個庫可以在任何環境下有效的運行。由蒙特利爾大學的機器學習小組最初開發,它主要用于滿足機器學習的需要。
很重要的一點是要注意到,Theano在低級別運算符上同NumPy緊密的結合在一起。并且這個庫優化了GPU和CPU的使用,使其在處理大數據運算時的表現更為迅速。
效率和穩定性的調整,使得即使是非常小的值也能得到更精確的結果,例如,即使給一個非常小的x值,計算log(1 + x)也能給出一個可是別的結果。
10.TensorFlow (提交:16785次,貢獻者:795個)
這是一個由Google的程序員開發,為機器學習打造的數據流圖像計算開源庫。設計它的目的是為了滿足Google環境中對訓練神經網絡的迫切需求。其前身是DistBelief,一個基于神經網絡的機器學習系統。而且TensorFlow并非嚴格受制于Google的框架——它可以廣泛地適用于多種真實世界的應用中。
TensorFlow的主要特點是他的多層節點系統,可以在大數據上快速的訓練人工神經網絡。這點為Google的語音識別以及圖像識別提供了助力。
11.Keras (提交:3519次,貢獻者:428個)
最后,來看一看Keras,這是一個Python開源庫,用于在高級界面上建立神經網絡。它簡約且直接,并擁有很強的延展性。它使用Theano 和 TensorFlow作為其終端,并且微軟正在試圖將CNTK(微軟自己的認知工具包)結合進去成為一個新的終端。
這種簡約的設計方式旨通過緊湊型系統建立來實現更加快捷和簡單的操作。
Keras極易上手,并且在使用的過程中有很多快速原型可供參考。它完全用Python寫的庫,并且本身就非常高級。Keras非常模塊化并有很強的拓展性。盡管Keras簡易,有高層次定位。Keras仍然擁有足夠的深度和力量來進行嚴肅的建模。
Keras的核心理念是“層級”,一切都是圍繞著層級建立的。數據在張量(tensors)中處理好,第一層負責張量的輸入,最后一層負責輸出,而模型則在這之間建立。
谷歌Trends歷史記錄
trends.google.com
Github合并請求(pull requests)歷史紀錄
datascience.com/trends
自然語言處理
12.NLTK (提交:12449次,貢獻者:196個)
這個庫的名字是Natural Language Toolkit(自然語言工具)的縮寫。正如其名,它被用于由象征性與統計性自然語言處理的一般任務。NLTK旨在用于自然語言處理的教學與研究等的相關領域(語義學,認知人工智能科學,等等)并現在它的使用受到了很大的關注。
NLTK在功能上允許很多操作,例如文字標簽,歸類,標記解釋,名稱識別;通過建立語料樹(corpus tree)來解釋句子的內外聯系,詞根提取以及語義推理。所有這些內置模塊都允許為不同的任務建造復雜研究系統。
13.Gensim (提交:2878次,貢獻者:179個)
這是一個開源的Python庫,為人們提供向量空間建模和主題建模的工具。這個庫的設計旨在高效處理大規模文本:除了允許內存中處理,效率的主要來源在于廣泛使用NumPy的數據結構和SciPy的運算符號,這兩個使用起來都十分的高效和簡單。
Gensim主要被用于未加工的非結構化的數字文本。Gensim使用了諸如:分層狄式流程(hierarchical Dirichlet processes),潛在語義分析(latent semantic analysis),潛在狄氏分布(latent Dirichlet allocation)以及文檔頻次(tf-idf,term frequency-inverse document frequency),隨機映射,文字/文檔向量化(word2vec,document2vec)檢測多個文檔文字中詞語出現的頻次,通常被成為語料庫(corpus),之類的算法。這些算法都是非監督性的——不需要任何的參數,唯一的輸入就是語料庫。
谷歌Trends歷史記錄
圖片來源:trends.google.com
Github下載請求歷史紀錄
圖片來源:datascience.com/trends
數據挖掘與統計
14. Scrapy(提交:6325次,貢獻者:243個)
Scrapy是一個制做爬蟲程序的庫,也被稱作“蜘蛛機器人”(spider bots)。旨在提取結構化數據,例如從網頁聯絡信息,或網址鏈接。
它是開源并由Python寫的庫。正如其名,它最開始只是為了扒網頁所設計,然而現在他已經進化成為一個擁有從API上獲取數據并且,用途廣泛的爬蟲程序。
這個庫一直貫徹其“不要在界面設計上重復你自己”的宗旨——鼓勵用戶寫出廣泛適用并可重復使用的代碼,從而制造強大的爬蟲軟件。
整個Scrapy的結構都是圍繞蜘蛛類建造的,該類封裝了爬蟲跟蹤的一組指令。
15. Statsmodels (提交: 8960, 貢獻: 119)
你可能已經從它的名字猜到了,statsmodels是一個讓用戶通過多種估計方式和統計模型,進行數據探索和統計分析的Python庫。
實用的特征有:統計描述,線性回歸模型,廣義線性模型,離散選擇模型,穩健線性模型,時間序列分析以及多種回歸子。
這個庫同樣提供大量為統計分析專門設計的畫圖方程,并且為更好的展示大數據進行了專門的調整。
結論
以上這些就是由數據科學家和工程師們公認的值得你一探究竟的Python庫。
這是每個庫在Github上動向的詳細數據:
當然這不是最終極全面的總結。也有其他的庫和框架,同樣值得為了特殊的任務進行適當的關注。一個很好的例子是另一個程序包SciKit,它重點針對一些特別的領域。像SciKit-Image就針對于圖像處理。
所以如果你還想到其他有用的庫的話,請在評論區與讀者一起分享吧。
大數據文摘作品,作者:Igor Bobriakov,編譯:朱璇、衛青、萬如苑
導讀:隨著近幾年Python已成為數據科學行業中大火的編程語言,我們將根據以往的經驗來為大家總結一下數據科學家和工程師幾個最實用的python庫。如果你是正在學習Python的學生,也許根據這個表單能夠幫你更好地找到學習的重心。
因為所有的python庫都是開源的,所以我們還列出了每個庫的提交次數、貢獻者人數和其他一些來自Github可以代表Python庫流行度的指標。
核心庫
1. NumPy(Github提交次數:15980,貢獻者人數:522)
在用Python處理科學任務時,我們常常需要使用Python的SciPy Stack。SciPyStack是一個專門為用Python處理科學計算而設計的軟件集(注意不要把SciPy Stack和SciPy庫搞混啦;SciPy庫只是SciPy Stack的一部分)。 讓我們來看看SciPy Stack里面都包括什么:SciPy Stack其實相當龐大,包括了十幾個庫。其中NumPy庫是它的核心庫(特別是最重要的幾個庫)中的明星。
NumPy(來自NumericalPython)是構建科學計算代碼集的最基礎的庫。它提供了許多用Python進行n維數組和矩陣操作的功能。該庫提供了NumPy數組類型的數學運算向量化,可以改善性能,從而加快執行速度。
2. SciPy(Github提交次數:17213,貢獻者人數:489)
SciPy是一個針對工程和科學庫。再次提醒大家SciPyStack不等于SciPy庫: SciPy Stack包括線性代數、優化、整合和統計等模塊,而 SciPy庫的主要功能是建立在NumPy基礎之上,因此它使用了大量的NumPy數組結構。 SciPy庫通過其特定的子模塊提供高效的數學運算功能,例如數值積分、優化等。 值得一提的是SciPy子模塊中的所有功能都附有詳細的文檔可供查閱。
3. Pandas(Github提交次數:15089,貢獻者人數:762)
Pandas是一個簡單直觀地應用于“帶標記的”和“關系性的”的數據的Python庫。它是探索數據的完美工具,能快速簡單地進行數據操作、聚合和可視化。
“數列(Series)”: 一維數組
“數據框(Data Frames)” :二維數組
例如,當你想從這兩種數據結構中得到一個新的數據框,把一個數列作為新的一行添加至數據框,你就能得到一個如圖所示的數據框。
下面列出的只是你可以用Pandas做的事情的一小部分:
● 輕松添加或刪除數據框中的數列
● 將其他數據結構轉換為數據框
● 處理缺失的數據,比如用NaN表示它們
● 強大的高效分組功能
下圖:核心庫的Google Trends歷史記錄
圖片來源:trends.google.com
下圖:核心庫的GitHub下載請求歷史記錄
圖片來源:datascience.com/trends
可視化類
4. Matplotlib(Github提交次數:21754,貢獻者人數:588)
MatPlotlib是另一個SciPy Stack的核心庫。它是為能輕松生成簡單而強大的可視化圖標而量身定制。 MatPlotlib是一個超酷的庫,它和NumPy,SciPy以及Pandas一起使Python成為像MatLab、Mathematica這樣的科學工具的強力競爭者。
然而,MatPlotlib是一個低端庫。這意味著您需要編寫更多的代碼才能達到高級的可視化效果;換句話說,和使用其他高級工具相比,使用MatPlotlib你需要投入更多的精力,但總體來說MatPlotlib還是值得一試的。
付出一些努力,您就用MatPlotlib做任何您想做的可視化圖表:
● 線路圖
● 散點圖
● 條形圖和直方圖
● 餅狀圖
● 莖圖
● 輪廓圖
● 矢量場圖
● 頻譜圖
Matplotlib還可用來創建標簽、網格、圖例和許多其他樣式圖。基本上,一切圖表都可以通過Matplotlib來定制。
Matplotlib庫還能支持不同的平臺,并能使用不同的GUI套件來展示所得到的可視化圖表。 各種IDE(比如IPython)都支持Matplotlib的功能。
除了Matplotlib,python還有一些其他庫能讓可視化變得更加容易。
下圖:使用Matplotlib制作的圖表展示
5. Seaborn(Github提交次數:1699,貢獻者人數:71)
Seaborn主要關注統計模型的可視化,包括熱分布圖(用來總結數據及描繪數據的整體分布)。 Seaborn是基于且高度依賴于Matplotlib的一個python庫。
下圖:使用Seaborn制作的圖表展示
6. Bokeh(Github提交次數:15724,貢獻者人數:223)
還有一個強大的可視化庫叫做Bokeh,其目的是互動式的可視化。 與Seaborn不同,Bokeh獨立于Matplotlib。 如上所述,Bokeh的賣點是互動性,它通過數據驅動文檔(d3.js)風格的新式瀏覽器來呈現圖表。
下圖:使用Bokeh制作的圖表展示
7. Plotly(Github提交次數:2486,貢獻者人數:33)
Plotly是一個基于Web來構建可視化的的工具箱。它有好幾種編程語言(其中包括Python)的API,并在plot.ly網站上提供一些強大的、開箱即用的圖表。 要使用Plotly,您先需要設置您的Plotly API密鑰。Plotly將在其服務器端處理圖表,并將結果在互聯網上發布。此外,它也提供了一種不需要使用其服務器和網絡的offline方法。
下圖:使用Plotly制作的圖表展示
下圖:python可視化庫的Google趨勢記錄
圖片來源:trends.google.com
機器學習類
8. SciKit-Learn(Github提交次數:21793,貢獻者人數:842)
Scikits是SciPy Stack的另一庫,它專為某些特殊功能(如圖像處理和機器學習輔助)而設計。對于機器學習而言,SciKit-Learn是其中最突出的一個是庫。SciKit-Learn建立在SciPy之上,并大量使用SciPy進行數學操作。
scikit-learn為常見的機器學習算法設計了一個簡潔通用的界面,使得在生產系統使用機器學習變的十分簡單。該庫有著高質量的代碼和文檔,性能高,容易使用,是使用Python進行機器學習的行業實踐標準。
深度學習類 - Keras / TensorFlow / Theano
在深度學習方面,Keras是最杰出最方便的Python庫之一。它可以在TensorFlow或者Theano之上運行。 下面讓我們來看一下它們的一些細節:
9.Theano. (提交:25870次,貢獻者:300個)
首先我們來談談Theano.
Theano同Numpy類似,是一款定義多維矩陣并含有數學運算符和表達式的Python包。通過編譯這個庫可以在任何環境下有效的運行。由蒙特利爾大學的機器學習小組最初開發,它主要用于滿足機器學習的需要。
很重要的一點是要注意到,Theano在低級別運算符上同NumPy緊密的結合在一起。并且這個庫優化了GPU和CPU的使用,使其在處理大數據運算時的表現更為迅速。
效率和穩定性的調整,使得即使是非常小的值也能得到更精確的結果,例如,即使給一個非常小的x值,計算log(1 + x)也能給出一個可是別的結果。
10.TensorFlow (提交:16785次,貢獻者:795個)
這是一個由Google的程序員開發,為機器學習打造的數據流圖像計算開源庫。設計它的目的是為了滿足Google環境中對訓練神經網絡的迫切需求。其前身是DistBelief,一個基于神經網絡的機器學習系統。而且TensorFlow并非嚴格受制于Google的框架——它可以廣泛地適用于多種真實世界的應用中。
TensorFlow的主要特點是他的多層節點系統,可以在大數據上快速的訓練人工神經網絡。這點為Google的語音識別以及圖像識別提供了助力。
11.Keras (提交:3519次,貢獻者:428個)
最后,來看一看Keras,這是一個Python開源庫,用于在高級界面上建立神經網絡。它簡約且直接,并擁有很強的延展性。它使用Theano 和 TensorFlow作為其終端,并且微軟正在試圖將CNTK(微軟自己的認知工具包)結合進去成為一個新的終端。
這種簡約的設計方式旨通過緊湊型系統建立來實現更加快捷和簡單的操作。
Keras極易上手,并且在使用的過程中有很多快速原型可供參考。它完全用Python寫的庫,并且本身就非常高級。Keras非常模塊化并有很強的拓展性。盡管Keras簡易,有高層次定位。Keras仍然擁有足夠的深度和力量來進行嚴肅的建模。
Keras的核心理念是“層級”,一切都是圍繞著層級建立的。數據在張量(tensors)中處理好,第一層負責張量的輸入,最后一層負責輸出,而模型則在這之間建立。
谷歌Trends歷史記錄
trends.google.com
Github合并請求(pull requests)歷史紀錄
datascience.com/trends
自然語言處理
12.NLTK (提交:12449次,貢獻者:196個)
這個庫的名字是Natural Language Toolkit(自然語言工具)的縮寫。正如其名,它被用于由象征性與統計性自然語言處理的一般任務。NLTK旨在用于自然語言處理的教學與研究等的相關領域(語義學,認知人工智能科學,等等)并現在它的使用受到了很大的關注。
NLTK在功能上允許很多操作,例如文字標簽,歸類,標記解釋,名稱識別;通過建立語料樹(corpus tree)來解釋句子的內外聯系,詞根提取以及語義推理。所有這些內置模塊都允許為不同的任務建造復雜研究系統。
13.Gensim (提交:2878次,貢獻者:179個)
這是一個開源的Python庫,為人們提供向量空間建模和主題建模的工具。這個庫的設計旨在高效處理大規模文本:除了允許內存中處理,效率的主要來源在于廣泛使用NumPy的數據結構和SciPy的運算符號,這兩個使用起來都十分的高效和簡單。
Gensim主要被用于未加工的非結構化的數字文本。Gensim使用了諸如:分層狄式流程(hierarchical Dirichlet processes),潛在語義分析(latent semantic analysis),潛在狄氏分布(latent Dirichlet allocation)以及文檔頻次(tf-idf,term frequency-inverse document frequency),隨機映射,文字/文檔向量化(word2vec,document2vec)檢測多個文檔文字中詞語出現的頻次,通常被成為語料庫(corpus),之類的算法。這些算法都是非監督性的——不需要任何的參數,唯一的輸入就是語料庫。
谷歌Trends歷史記錄
圖片來源:trends.google.com
Github下載請求歷史紀錄
圖片來源:datascience.com/trends
數據挖掘與統計
14.Scrapy(提交:6325次,貢獻者:243個)
Scrapy是一個制做爬蟲程序的庫,也被稱作“蜘蛛機器人”(spider bots)。旨在提取結構化數據,例如從網頁聯絡信息,或網址鏈接。
它是開源并由Python寫的庫。正如其名,它最開始只是為了扒網頁所設計,然而現在他已經進化成為一個擁有從API上獲取數據并且,用途廣泛的爬蟲程序。
這個庫一直貫徹其“不要在界面設計上重復你自己”的宗旨——鼓勵用戶寫出廣泛適用并可重復使用的代碼,從而制造強大的爬蟲軟件。
整個Scrapy的結構都是圍繞蜘蛛類建造的,該類封裝了爬蟲跟蹤的一組指令。
15. Statsmodels (提交: 8960, 貢獻: 119)
你可能已經從它的名字猜到了,statsmodels是一個讓用戶通過多種估計方式和統計模型,進行數據探索和統計分析的Python庫。
實用的特征有:統計描述,線性回歸模型,廣義線性模型,離散選擇模型,穩健線性模型,時間序列分析以及多種回歸子。
這個庫同樣提供大量為統計分析專門設計的畫圖方程,并且為更好的展示大數據進行了專門的調整。
結論
以上這些就是由數據科學家和工程師們公認的值得你一探究竟的Python庫。
這是每個庫在Github上動向的詳細數據:
當然這不是最終極全面的總結。也有其他的庫和框架,同樣值得為了特殊的任務進行適當的關注。一個很好的例子是另一個程序包SciKit,它重點針對一些特別的領域。像SciKit-Image就針對于圖像處理。
所以如果你還想到其他有用的庫的話,請在評論區與讀者一起分享吧。
原文鏈接