Python---(9)資料科學領域常用的15個Python包
由於近年來Python已經在資料科學領域引起了很大的關注,我想根據最近的經驗,為資料科學家和工程師列出一些最有用的庫。
由於所有的庫都是開源的,我們增加了來自Github的提交,貢獻者,計數和其他指標,這可以作為python資料科學庫流行度的代理指標。
核心庫
1、Numpy
Numpy(stands for Numerical Python)當開始嘗試用Python解決科學任務時,numpy是基石,它能運算元組和矩陣提供了豐富的特性。該庫提供了NumPy陣列型別的數學運算向量化,可以改善效能,從而加快執行速度。
2.SciPy
SciPy是一個工程和科學軟體庫。SciPy包含線性代數,優化,整合和統計的模組。 SciPy庫的主要功能是建立在NumPy的基礎之上,因此它的陣列大量使用了NumPy。
3.Pandas
Pandas是一個可以方便處理表資料(經常接觸,易於理解的excell表)。資料清洗的完美工具,被設計用來快速簡單的資料操作,聚合和視覺化。 在這個庫中主要由兩種資料結構:
pandas.Series - 1維
pandas.DataFrames - 2維
如下只是我們基於Pandas能做的事情的小清單:
在DataFrame中輕易地刪除或者新增列
把資料結構轉換為DataFrame物件
處理缺失資料,用NaNs代表
GroupBy方法
視覺化
Google Trends history
GitHub pull requests history
4.Matplotlib
MatPlotlib是python視覺化庫,它讓Python正成為像MatLab或者Mathematica這樣的科學工具的有力競爭者。然而,這個庫相當底層,意味著你需要編寫更多的程式碼才能達到高階的視覺化效果,通常會比使用更多的高階工具付出更多的努力,但總體來說努力是值得的。
只需要一點功夫,你就能做出下面任何的視覺化方法:
線圖
散點圖
條形圖和直方圖
餅狀圖
莖圖
等高線圖
向量場圖
頻譜圖
還有使用Matplotlib建立標籤,圖例和許多其他格式化實體的功能。 基本上,一切都是可定製的。
該庫由不同的平臺支援,並使用不同的GUI套件來描述所得到的視覺化。 不同的IDE(如IPython)支援Matplotlib的功能。
還有一些其他的庫可以使視覺化變得更加容易。
5.Seaborn
Seaborn主要聚焦於統計模型的視覺化;這些視覺化包括總結資料但仍描繪整體分佈的熱圖。Seaborn是基於Matplotlib建立的,並高度依賴於那個包。
6.Bokeh
Boken是另一個強大的視覺化庫,目標是建立互動視覺化的圖示。與之前的庫相比,這個庫獨立於Matplotlib。 正如我們已經提到的那樣,Bokeh的主要聚焦在互動性,它通過現代瀏覽器以資料驅動文件(d3.js)的風格呈現。
7.Plotly
簡單介紹一下Plotly。它是一個基於Web的工具箱,將API暴露給某些程式語言(其中包括Python)來構建視覺化。 在http://plot.ly網站上有一些強大的,開箱即用的圖形。為了使用Plotly,您將需要設定您的API金鑰。圖形將被處理在伺服器端,並將在網際網路上釋出。
Google Trends history
GitHub pull requests history
機器學習
8.SciKit-Learn
Scikits專為特定功能(如影象處理和機器學習輔助)而設計。 在這些領域,其中最突出的一個是scikit-learn。該軟體包建立在SciPy的上層,並大量使用其數學操作。
scikit-learn公開了一個簡潔和一致的介面,結合常見的機器學習演算法,使得把機器學習帶入生產系統變得簡單。 此庫有著高質量的程式碼和良好的文件,並使用簡單效能優越,事實上是使用Python進行機器學習的行業標準。
深度學習 - Keras/TensorFlow/Theano
在深度學習方面,Python中最突出和最方便的庫之一是Keras,它可以在TensorFlow或者Theano之上執行。讓我們來看一下他們的一些細節。
9.Theano
首先,讓我們談談Theano。
Theano是一個Python包,它定義了與NumPy類似的多維陣列,以及數學運算和表示式。 這個庫是自編譯的,使其能夠在所有架構上高效執行。 最初由蒙特利爾大學機器學習組開發,主要用於機器學習的需求。
重要的是要注意的是,Theano與NumPy在低層次的操作上緊密整合。 該庫還優化了GPU和CPU的使用,使資料密集型計算的效能更快。
效率和穩定性調整允許更精確的結果,甚至非常小的值,例如,log(1 + x)的計算將給出x的最小值的認知結果。TensorFlow
10TensorFlow
TensorFlow是由Google的開發人員開發,它是一個圖形化的資料流計算開源庫,專注於機器學習。 它旨在滿足Google環境對訓練神經網路的高度要求,並且是基於神經網路的機器學習系統DistBelief的繼任者。然而,TensorFlow並不是嚴格用於谷歌範圍的科學用途 - 在一般的實際應用中同樣有效。
TensorFlow的關鍵特徵是其多層節點系統,可以在大型資料集上快速訓練人工神經網路。 這為Google的語音識別和影象物件識別提供了支援。
11.Keras
最後,我們來看看Keras。它是一個用Python編寫的用於在高階介面構建神經網路的開源庫。它簡單易懂又有著高度可擴充套件性。它使用Theano或TensorFlow作為後端,但Microsoft現在將CNTK(Microsoft的認知工具包)整合為新的後端。
設計中的極簡方法旨在通過建立極小集進行快速和簡單的實驗。
Keras 真的非常容易入門而且可以通過快速標準逐漸深入。它是用純Python編寫的,高度模組化而又可擴充套件。儘管它的輕鬆,簡單和高度定向,Keras仍然對大型模型有著足夠深和有力的機器學習能力。
Keras的核心是基於層,其他一切都圍繞著它們構建。資料預處理為張量tensor,第一層layer負責輸入張量,最後一層負責輸出,並建立模型。
Google Trends history
GitHub pull requests history
自然語言處理。
12.NLTK
這套工具包的名稱代表自然語言工具包,顧名思義,它用於符號和統計自然語言處理的常見任務。 NLTK旨在促進NLP及相關領域(語言學,認知科學人工智慧等)的教學和研究,目前正在被重點關注。
NLTK的功能允許許多操作,例如文字標記,分類和標記,名稱實體標識,建立語言樹,顯示語言間和句子內依賴性,詞根,語義推理。 所有的構建塊都可以為不同的任務構建複雜的研究系統,例如情緒分析,自動總結。
13.Gensim
它是一個用於Python的開源庫,可以用來進行向量空間建模和主題建模的工具。 這個工具包不僅可以進行記憶體處理,還設計來高效處理大型文字。效率通過使用NumPy資料結構和SciPy操作來實現。既高效又易於使用。
Gensim旨在與原始和非結構化數字文字一起使用。 Gensim實現了諸如分層Dirichlet程序(HDP),潛在語義分析(LSA)和潛在Dirichlet分配(LDA)之類的演算法,以及tf-idf,隨機投影,word2vec和document2vec便於檢查文字中的重複模式的文字的一套檔案(通常稱為語料庫)。 所有的演算法是無監督的 - 不需要任何引數,唯一的輸入是語料庫。
Google Trends history
GitHub pull requests history
資料探勘、統計
14.Scrapy
Scrapy是用於從網路檢索結構化資料(如聯絡人資訊或URL)的爬行程式(也稱為蜘蛛機器人)的庫。
它是開源的,用Python編寫。 它的設計嚴格按照爬行的方式,正如它的名字,但是它已經在完整的框架中發展,能夠從API採集資料並作為通用爬蟲。
該庫在介面設計中著名的“不要重複自己” - 它提示使用者編寫將要重複使用的通用程式碼,從而構建和縮放大型爬蟲。
Scrapy的架構圍繞著Spider類構建,包含了爬行器跟蹤的一系列指令。
15.Statsmodels
正如您可能從名稱中猜出的那樣,statsmodels是一個用於Python的庫,使使用者能夠通過使用各種統計模型估計方法進行資料探勘並執行統計斷言和分析。
許多有用的特徵是描述性的,並通過使用線性迴歸模型,廣義線性模型,離散選擇模型,魯棒線性模型,時間序列分析模型,各種估計量進行統計。
該庫還提供了可擴充套件的繪圖功能,專門為統計分析和在進行大資料統計時錶現良好而設計。
結論
這些庫被許多資料科學家和工程師認為是該列表的首位,值得一看,並至少熟悉它們。
以下是每個庫Github活躍程度的詳細統計資料:
當然,這不是完全詳盡的列表,還有許多其他庫,工具包和框架也是非常有用的,尤其是針對一些特別的任務。 一個很好的例子是不同的SciKit軟體包,專注於特定領域,如用於處理影象的SciKit-Image