盤點2017年15個最常用的資料處理python庫

由於近年來Python在資料科學領域獲得了很大的推動,我想根據最近的經驗,為資料科學家和工程師列出一些最有用的庫。而且,由於所有庫都是開源的,我們增加了來自Github的提交,貢獻者數量和其他指標,這可以作為庫流行度的代理指標。

核心庫

1。 NumPy(提交:15980,貢獻者:522)

當開始處理Python中的科學任務時,不可避免地會對Python的SciPy Stack有所幫助,SciPy Stack是專門為Python中的科學計算而設計的軟體的集合(不要與作為該堆疊的一部分的SciPy庫混淆,圍繞這個堆疊的社群)。 這樣我們就想先看看它。 然而,這個堆疊非常龐大,其中有十幾個庫,我們希望把重點放在核心包(特別是最重要的包)上。

科學計算棧所建立的最基本的軟體包是NumPy(代表Numerical Python)。它為Python中的n陣列和矩陣操作提供了豐富的有用特性。 該庫提供了對NumPy陣列型別的數學運算的向量化,從而改善了效能,並相應地加快了執行速度。

2。 SciPy(提交:17213,貢獻者:489)

SciPy是一個工程和科學軟體庫。 再次,您需要了解SciPy Stack和SciPy Library之間的區別。 SciPy包含用於線性代數,最佳化,整合和統計的模組。SciPy庫的主要功能建立在NumPy之上,因此它的陣列大量使用了NumPy。它透過其特定的子模組提供了有效的數值例程,如數值積分,最佳化等等。SciPy的所有子模組的功能都有很好的記錄 - 另一個硬幣在它的鍋裡。

3。熊貓(承諾:15089,貢獻者:762)

Pandas是一個Python包,旨在簡單直觀地處理“標記”和“關係”資料。 熊貓是資料爭奪的最佳工具。 它設計用於快速簡便的資料處理,聚合和視覺化。

庫中有兩個主要的資料結構:

“系列” - 一維, “資料框架”是二維的。 例如,當您想要從這兩種型別的結構中接收到一個新的Dataframe時,您將透過傳遞一個Series來將一行新增到DataFrame中,從而得到這樣的DF:

這裡只是一小部分你可以用熊貓做的事情:

輕鬆從DataFrame中刪除和新增列

將資料結構轉換為DataFrame物件

處理缺失的資料,表示為NaN

功能強大的分組

視覺化

4。Matplotlib(提交:21754,貢獻者:588)

另一個SciPy Stack核心軟體包和另一個為輕鬆生成簡單而強大的視覺化生成的Python庫是Matplotlib。 這是一個頂尖的軟體,使得Python(有NumPy,SciPy和Pandas的一些幫助)成為MatLab或Mathematica等科學工具的認知競爭者。

但是,這個庫是相當低階的,這意味著您需要編寫更多的程式碼才能達到高階的視覺化效果,而且如果使用更多的高階工具,您通常會付出更多的努力,但總體工作量是值得的射擊。

透過一點努力,您可以製作任何視覺化檔案:

線條圖;

散點圖;

條形圖和直方圖;

餅狀圖;

莖地塊;

等高線圖;

顫抖地塊;

頻譜圖。

還有用Matplotlib建立標籤,網格,圖例和許多其他格式化實體的工具。 基本上,一切都是可定製的。

該庫由不同的平臺支援,並使用不同的GUI工具包來描述視覺化結果。 不同的IDE(如IPython)支援Matplotlib的功能。

還有一些額外的庫可以使視覺化更容易。

5。 Seaborn(承諾:1699,貢獻者:71)

Seaborn主要關注統計模型的視覺化; 這樣的視覺化包括熱圖,那些總結資料但仍然描繪整體分佈的熱圖。 Seaborn基於Matplotlib並高度依賴於此。

6。散景(提交:15724,貢獻者:223)

另一個偉大的視覺化庫是Bokeh,它的目標是互動式視覺化。 與之前的庫相比,這個庫獨立於Matplotlib。 正如我們已經提到的,Bokeh的主要焦點是互動性,它透過現代瀏覽器以“資料驅動文件”(d3。js)的形式進行演示。

7。 Plotly(承諾:2486,貢獻者:33)

最後,關於Plotly的一句話。 這是一個基於Web的工具箱,用於構建視覺化,將API暴露給一些程式語言(其中的Python)。 在plot。ly網站上有一些強大的,開箱即用的圖形。 為了使用Plotly,你需要設定你的API金鑰。 圖形將被處理伺服器端,並將張貼在網際網路上,但有一種方法來避免它。

機器學習

8。 SciKit-Learn(提交:21793,貢獻者:842)

Scikits是SciPy Stack的附加軟體包,專門用於影象處理和機器學習等特定功能。 就後者而言,這些套餐中最為突出的就是scikit-learn。 該軟體包構建在SciPy的頂部,並大量使用其數學運算。

scikit-learn為常見的機器學習演算法提供了一個簡潔而一致的介面,使得將ML帶入生產系統變得簡單。 該庫結合了高質量的程式碼和良好的文件,易用性和高效能,是事實上用Python進行機器學習的行業標準。

深度學習 - Keras / TensorFlow / Theano

在深度學習方面,這個領域最重要和最方便的Python庫之一是Keras,它可以在TensorFlow或Theano之上執行。 讓我們來詳細介紹一下所有這些細節。

9。Theano。 (承諾:25870,貢獻者:300)

首先,讓我們談論Theano。

Theano是一個Python包,它定義了類似於NumPy的多維陣列,以及數學運算和表示式。 該庫被編譯,使其在所有體系結構上高效執行。 最初由蒙特利爾大學機器學習小組開發,主要用於機器學習的需求。

重要的是要注意的是Theano與NumPy在低級別的操作上緊密地結合在一起。該庫還優化了GPU和CPU的使用,使資料密集型計算的效能更快。

效率和穩定性的調整可以得到更精確的結果,甚至非常小的值,例如log(1 + x)的計算可以給出即使是最小值x的認識結果。

10。張量流。 (承諾:16785,貢獻者:795) 來自Google的開發人員,它是一個開源的資料流圖計算庫,對於機器學習來說,這個計算更加尖銳。 它旨在滿足Google環境對神經網路的高需求要求,並且是基於神經網路的機器學習系統DistBelief的繼任者。 然而,TensorFlow在Google的邊界方面並不嚴格地用於科學用途 - 它足夠用於各種現實世界的應用。

TensorFlow的主要特點是他們的多層節點系統,可以在大型資料集上快速訓練人工神經網路。 這使得Google的語音識別和圖片中的物件識別成為可能。

11。 Keras。 (承諾:3519,貢獻者:428)

最後,讓我們看看凱拉斯。 它是一個開源的庫,用於在高階介面中構建神經網路,並且是用Python編寫的。 它是簡約而直接的,具有高度的可擴充套件性。它使用Theano或TensorFlow作為其後端,但微軟現在正在努力將CNTK(微軟的認知工具包)作為一個新的後端。

設計中的簡約方法旨在透過構建緊湊型系統進行快速簡單的實驗。

凱拉斯真的很容易上手,並繼續與快速原型。 它是用純Python編寫的,本質上是高階的。 它是高度模組化和可擴充套件的。 儘管其簡單,簡單和高層次的定位,Keras仍然深刻而強大,足以進行嚴肅的建模。

Keras的基本思想是基於層次的,其他的一切都圍繞著它們而建立起來的。資料準備張量,第一層負責張量的輸入,最後一層負責輸出,模型置於兩者之間。

自然語言處理

12。 NLTK(承諾:12449,貢獻者:196)

這套庫的名稱代表自然語言工具包,顧名思義,它用於符號和統計自然語言處理的常見任務。 NLTK旨在促進NLP及其相關領域(語言學,認知科學,人工智慧等)的教學和研究,現在正在使用它。

NLTK的功能允許進行許多操作,例如文字標記,分類和標記,名稱實體標識,建立顯示句子間和句子間依賴性的語料樹,詞幹,語義推理。 所有這些構建塊允許為不同的任務構建複雜的研究系統,例如情感分析,自動彙總。

13。 Gensim(承諾:2878,貢獻者:179)

它是一個Python的開源庫,它實現了向量空間建模和主題建模工具。 該庫設計為高效的大文字,不僅可以在記憶體中進行處理。 透過廣泛使用NumPy資料結構和SciPy操作來實現效率。 它既高效又易於使用。

Gensim旨在用於原始和非結構化的數字文字。 Gensim實現了分層Dirichlet程序(HDP),潛在語義分析(LSA)和潛在Dirichlet分配(LDA)以及tf-idf,隨機投影,word2vec和document2vec等演算法,以便檢查文字中重複模式的文字一套檔案(通常稱為語料庫)。 所有的演算法都是無監督的 - 不需要任何引數,唯一的輸入是語料庫。

資料探勘/ 統計

14。 Scrapy(提交:6325,貢獻者:243)

Scrapy是一個用於抓取程式的庫,也被稱為蜘蛛機器人,用於從網路中檢索結構化資料,例如聯絡資訊或URL。

它是開源的,用Python編寫。 正如其名稱所示,它最初是為了抓取而設計的,但是它已經在完整的框架中發展,能夠從API收集資料並充當通用抓取工具。

該圖書館在介面設計中遵循著名的“不要重複自己” - 它提示使用者編寫將被重用的通用程式碼,從而構建和擴充套件大型爬蟲。

Scrapy的架構是圍繞Spider類構建的,它封裝了爬蟲所遵循的指令集。

15。 Statsmodels(Commits:8960,Contributors:119)

正如您可能從名字中猜出的一樣,statsmodels是一個Python庫,使使用者能夠透過使用各種統計模型估計方法和統計斷言和分析來進行資料探勘。

透過使用線性迴歸模型,廣義線性模型,離散選擇模型,魯棒線性模型,時間序列分析模型,各種估計量,許多有用的特徵是描述性和結果統計。

他還提供了大量的繪圖功能,這些功能專門用於統計分析,並利用統計資料的大資料集對效能進行調整。

結論。 這些被許多資料科學家和工程師認為是最重要的開源庫,值得一看,並且至少要熟悉它們。

以下是這些庫中Github活動的詳細統計資訊:

盤點2017年15個最常用的資料處理python庫

當然,這並不是完全詳盡的列表,還有許多其他的圖書館和框架也是值得的,值得適當注意特定的任務。 一個很好的例子是SciKit的不同軟體包,專注於特定的領域,像SciKit-Image用於處理影象。

所以,如果你有另一個有用的圖書館,請讓我們的讀者在評論部分知道。

非常感謝您的關注。