近年來,Python在數據科學行業扮演著越來越重要的角色。因此,我們根據近來的使用體驗,在本文中列出了對數據科學家、工程師們最有用的那些庫。
由于這些庫都開源了,我們從Github上引入了提交數、貢獻者數和其他指標,這可以作為庫流行程度的參考指標。
本文目錄如下:
核心庫
1.NumPy(提交數:15980,貢獻者數:522)
2.SciPy(提交數:17213,貢獻者數:489)
3.Pandas(提交數:15089,貢獻者數:762)
可視化
4.Matplotlib(提交數:21754,貢獻者數:588)
5.Seaborn(提交數:1699,貢獻者數:71)
6.Bokeh(提交數:15724,貢獻者數:223)
7.Plotly(提交數:2486,貢獻者數:33)
機器學習
8.SciKit-Learn(提交數:21793,貢獻者數:842)
深度學習
9.Theano.(提交數:25870,貢獻者數:300)
10.TensorFlow.(提交數:16785,貢獻者數:795)
11.Keras.(提交數:3519,貢獻者數:428)
自然語言處理
12.NLTK(提交數:12449,貢獻者數:196)
13.Gensim(提交數:2878,貢獻者數:179)
數據挖掘,統計學
14.Scrapy(提交數:6325,貢獻者數:243)
15.Statsmodels(提交數:8960,貢獻者數:119)
核心庫
1.NumPy(提交數:15980,貢獻者數:522)
當開始處理Python中的科學任務,Python的SciPyStack肯定可以提供幫助,它是專門為Python中科學計算而設計的軟件集合。然而,SciPyStack相當龐大,其中有十幾個庫,我們把焦點放在核心包上。
關于建立科學計算棧,最基本的包是Numpy(全稱為NumericalPython)。它為Python中的n維數組和矩陣的操作提供了大量有用的功能。該庫提供了NumPy數組類型的數學運算向量化,可以改善性能,從而加快執行速度。
地址:
http://www.numpy.org
2.SciPy(提交數:17213,貢獻者數:489)
SciPy是一個工程和科學軟件庫。你需要理解SciPyStack和SciPy庫之間的區別。
SciPy包含線性代數、優化、集成和統計的模塊。SciPy庫的主要功能是建立在NumPy上,從而它的數組大量使用了NumPy的。它通過其特定子模塊提供有效的數值例程,并作為數字積分、優化和其他例程。SciPy的所有子模塊中的功能都有詳細的說明——又是一個SciPy非常有幫助的點。
地址:
https://www.scipy.orghttps://www.scipy.org
3.Pandas(提交數:15089,貢獻者數:762)
Pandas是一個Python包,旨在通過“標記”和“關系”數據進行工作,簡單直觀。Pandas是數據整理的完美工具。它設計用于快速簡單的數據操作,聚合和可視化。
地址:
http://pandas.pydata.org
可視化
4.Matplotlib(提交數:21754,貢獻者數:588)
又一個SciPyStack核心軟件包以及Python庫,Matplotlib為輕松生成簡單而強大的可視化而量身定制。它是一個頂尖的軟件(在NumPy,SciPy和Pandas的幫助下),它使Python成為像MatLab或Mathematica這樣的科學工具的競爭對手。
然而,這個庫是低層級的,這意味著你需要編寫更多的代碼才能達到高級的可視化效果,而且通常會比使用更多的高級工具付出更多的努力,但總體上這些努力是值得的。
只要付出一點你就可以做任何可視化:線圖、散點圖、條形圖和直方圖、餅狀圖、莖圖、輪廓圖、場圖、頻譜圖。
還有使用Matplotlib創建標簽、網格、圖例和許多其他格式化實體的功能。基本上,一切都是可定制的。
該庫由不同的平臺支持,并使用不同的GUI套件來描述所得到的可視化。不同的IDE(如IPython)都支持Matplotlib的功能。
還有一些額外的庫可以使可視化變得更加容易。
地址:
https://matplotlib.org
5.Seaborn(提交數:1699,貢獻者數:71)
Seaborn主要關注統計模型的可視化;這種可視化包括熱圖,這些熱圖(heatmap)總結數據但仍描繪整體分布。Seaborn基于Matplotlib,并高度依賴于此。
地址:
https://seaborn.pydata.org
6.Bokeh(提交數:15724,貢獻者數:223)
另一個很不錯的可視化庫是Bokeh,它針對交互式可視化。與以前的庫相比,它獨立于Matplotlib。正如我們提到的,Bokeh的主要焦點是交互性,它通過現代瀏覽器以數據驅動文檔(d3.js)的風格呈現。
地址:
http://bokeh.pydata.org
7.Plotly(提交數:2486,貢獻者數:33)
最后,關于Plotly的話。它是一個基于Web用于構建可視化的工具箱,提供API給一些編程語言(Python在內)。在plot.ly網站上有一些強大的、上手即用的圖形。為了使用Plotly,你將需要設置API密鑰。圖形將在服務器端處理,并發布到互聯網,但有一種方法可以避免。
地址:
https://plot.ly
機器學習
8.SciKit-Learn(提交數:21793,貢獻者數:842)
Scikits是ScikitsStack額外的軟件包,專為像圖像處理和機器學習輔助等特定功能而設計。對于機器學習輔助,scikit-learn是所有軟件包里最突出的一個。它建立在SciPy之上,并大量利用它的數學運算。
scikit-learn給常見的機器學習算法公開了一個簡潔、一致的接口,可簡單地將機器學習帶入生產系統中。該庫中集成了有質量的代碼和良好的文檔、簡單易用并且十分高效,是使用Python進行機器學習的實際行業標準。
地址:
http://scikit-learn.orghttp://scikit-learn.org
深度學習
在深度學習方面,Python中最著名和最方便的庫之一是Keras,它可以在TensorFlow或Theano框架上運行。讓我們來看一下它們的一些細節。
9.Theano(提交數:25870,貢獻者數:300)
首先讓我們談談Theano。
Theano是一個Python軟件包,它定義了與NumPy類似的多維數組,以及數學運算和表達式。此庫是被編譯的,可實現在所有架構上的高效運行。最初由蒙特利爾大學機器學習組開發,它主要用于滿足機器學習的需求。
值得注意的是,Theano緊密結合了NumPy在低層次上的運算。另外,該庫還優化了GPU和CPU的使用,使數據密集型的計算平臺性能更佳。
效率和穩定性微調保證了即使在數值很小的情況下,仍有更精確的結果,例如,即使只給出x的最小值,log(1+x)仍能計算出合理的結果。
地址:
https://github.com/Theano
10.TensorFlow(提交數:16785,貢獻者數:795)
TensorFlow來自Google的開發人員,它是數據流圖計算的開源庫,為機器學習而設計。它旨在滿足谷歌對訓練神經網絡的高需求,并且是基于神經網絡的機器學習系統DistBelief的繼任者。然而,TensorFlow并不限制于谷歌的科學應用范圍–它可以通用于多種多樣的現實應用中。
TensorFlow的關鍵特征是它的多層節點系統,可以在大型數據集上快速訓練神經網絡。這為谷歌的語音識別和圖像識別提供了支持。
地址:
https://www.tensorflow.org
11.Keras(提交數:3519,貢獻者數:428)
最后我們來看看Keras。它是一個用Python編寫的開源的庫,用于在高層的接口上構建神經網絡。它簡單易懂,具有高級可擴展性。Keras使用Theano或TensorFlow作為后端,但微軟現在正努力整合CNTK(微軟的認知工具包)作為新的后端。
設計中的簡約方法旨在通過建立緊湊型系統進行快速、簡便的實驗。
Keras真的容易上手,并在持續完善它的快速原型能力。它完全用Python編寫,可被高度模塊化和擴展。盡管它以易上手、簡單和以高層次為導向,但是Keras足夠有深度并且足夠強大去支持復雜的模型。
地址:
https://keras.io
自然語言處理
12.NLTK(提交數:12449,貢獻者數:196)
這個庫的名稱“NaturalLanguageToolkit”,代表自然語言工具包,顧名思義,它用于符號學和統計學自然語言處理(NLP)的常見任務。NLTK旨在促進NLP及相關領域(語言學,認知科學人工智能等)的教學和研究,目前受到重點關注。
NLTK的功能允許很多操作,例如文本標記,分類和標記,實體名稱識別,建立語料庫,可以顯示語言內部和各句子間的依賴性、詞根、語義推理等。所有的構建模塊都可以為不同的任務構建復雜的研究系統,例如情緒分析、自動總結。
地址:
http://www.nltk.org
13.Gensim(提交數:2878,貢獻者數:179)
它是一個用于Python的開源庫,為有向量空間模型和主題模型的工作提供了使用工具。這個庫是為了高效處理大量文本而設計的,所以不僅可以進行內存處理,還可以通過廣泛使用NumPy數據結構和SciPy操作來獲得更高的效率。Gensim高效也易于使用。
Gensim旨在與原始和非結構化的數字文本一起使用。它實現了諸如hierarchicalDirichletprocesses(HDP),潛在語義分析(LSA)和潛在Dirichlet分配(LDA)之類的算法,以及tf-idf,隨機預測,word2vec和document2vec,便于檢查一組文檔中有重復模式的文本(通常稱為語料庫)。所有的算法均是無監督的,意味著不需要任何參數,唯一的輸入只有語料庫。
地址:
http://radimrehurek.com/gensim
數據挖掘,統計學
14.Scrapy(提交數:6325,貢獻者數:243)
Scrapy庫是用于從網絡結構化檢索數據(如聯系人信息或URL),可以用來設計crawling程序(也稱為蜘蛛bots)。
它是開源的,使用Python編寫。最開始只是如它的名字暗示的一樣,只用來做scraping,但是它現在已經在完整的框架中發展,能夠從API采集數據并作為通用的crawlers了。
該庫在界面設計中標榜著“不要重復自己”,它推薦用戶們編寫泛化得到、可被重復使用的通用代碼,從而構建和擴展大型的crawlers。
Scrapy的架構圍繞著Spiderclass構建,這其中包含了crawler追從的一套指令。
地址:
https://scrapy.org
15.Statsmodels(提交數:8960,貢獻者數:119)
你可能從名字就猜出大概了,statsmodels使用戶能夠通過使用各種統計模型的估算方法進行數據挖掘,并執行統計判斷和分析。
許多有用的特征是可被描述的,并通過使用線性回歸模型,廣義線性模型,離散選擇模型,魯棒線性模型,時間序列分析模型,各種估計方法得出統計結果。
這個庫還提供了廣泛的繪圖功能,專門用于大數據統計中的性能優化工作。