2017年最受歡迎的15大Python庫有哪些?
點擊上方
「
Python開發
」,選擇「置頂公眾號」
關鍵時刻,第一時間送達!
近年來,Python 在數據科學行業扮演著越來越重要的角色。因此,我根據近來的使用體驗,
在本文中列出了對數據科學家、工程師們最有用的那些庫。
由於這些庫都開源了,我們從Github上引入了提交數,貢獻者數和其他指標,這可以作為庫流行程度的參考指標。
核心庫
1、NumPy (提交數: 15980, 貢獻者數: 522)
當開始處理Python中的科學任務,Python的SciPy Stack肯定可以提供幫助,它是專門為Python中科學計算而設計的軟體集合(不要混淆SciPy庫,它是SciPy Stack的一部分,和SciPy Stack的社區)這樣我們開始來看一下吧。然而,SciPy Stack相當龐大,其中有十幾個庫,我們把焦點放在核心包上(特別是最重要的)。
關於建立科學計算棧,最基本的包是Numpy(全稱為Numerical Python)。它為Python中的n維數組和矩陣的操作提供了大量有用的功能。該庫提供了NumPy數組類型的數學運算向量化,可以改善性能,從而加快執行速度。
2、SciPy (提交數: 17213, 貢獻者數: 489)
SciPy是一個工程和科學軟體庫。雷鋒網再次提醒,你需要理解SciPy Stack和SciPy庫之間的區別。
SciPy包含線性代數,優化,集成和統計的模塊。SciPy庫的主要功能是建立在NumPy上,從而它的數組大量的使用了NumPy的。它通過其特定子模塊提供有效的數值常式,並作為數字積分、優化和其他常式。SciPy的所有子模塊中的功能都有詳細的說明 ——又是一個SciPy非常有幫助的點。
3、Pandas (提交數: 15089, 貢獻者數:762)
Pandas是一個Python包,旨在通過「標記」和「關係」數據進行工作,簡單直觀。Pandas是數據整理的完美工具。它設計用於快速簡單的數據操作,聚合和可視化。
庫中有兩個主要的數據結構:
「系列」(Series),一維
「數據幀」(Data Frames),二維
例如,當您要從這兩種類型的結構中接收到一個新的Dataframe時,通過傳遞一個Series,您將收到一個單獨的行到DataFrame的DF:
這裡稍微列出了你可以用Pandas做的事情:
輕鬆刪除並添加數據幀(DataFrame)中的列
將數據結構轉換為數據幀(DataFrame)對象
處理丟失的數據,表示為NaN
功能強大的分組
Google趨勢記錄
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
可視化
4、Matplotlib (提交數: 21754, 貢獻者數: 588)
又一個SciPy Stack核心軟體包以及 Python庫,Matplotlib為輕鬆生成簡單而強大的可視化而量身定製。它是一個頂尖的軟體(在NumPy,SciPy和Pandas的幫助下),它使Python成為像MatLab或Mathematica這樣的科學工具的競爭對手。
然而,這個庫是低層級的,這意味著你需要編寫更多的代碼才能達到高級的可視化效果,而且通常會比使用更多的高級工具付出更多的努力,但總體上這些努力是值得的。
只要付出一點你就可以做任何可視化:
線圖
散點圖
條形圖和直方圖
餅狀圖;
莖圖
輪廓圖
場圖
頻譜圖
還有使用Matplotlib創建標籤,網格,圖例和許多其他格式化實體的功能。基本上,一切都是可定製的。
該庫由不同的平台支持,並使用不同的GUI套件來描述所得到的可視化。不同的IDE(如IPython)都支持Matplotlib的功能。
還有一些額外的庫可以使可視化變得更加容易。
5、Seaborn (提交數: 1699, 貢獻者數: 71)
Seaborn主要關注統計模型的可視化;這種可視化包括熱圖,這些熱圖(heat map)總結數據但仍描繪整體分布。Seaborn基於Matplotlib,並高度依賴於此。
6、Bokeh (提交數: 15724, 貢獻者數: 223)
另一個很不錯的可視化庫是Bokeh,它針對互動式可視化。與以前的庫相比,它獨立於Matplotlib。正如我們提到的,Bokeh的主要焦點是交互性,它通過現代瀏覽器以數據驅動文檔(d3.js)的風格呈現。
7、Plotly (提交數: 2486, 貢獻者數: 33)
最後,關於Plotly的話。它是一個基於Web用於構建可視化的工具箱,提供API給一些編程語言(Python在內)。在plot.ly網站上有一些強大的、上手即用的圖形。為了使用Plotly,你將需要設置API密鑰。圖形將在伺服器端處理,並發布到互聯網,但有一種方法可以避免。
Google趨勢記錄
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
機器學習
8、SciKit-Learn (提交數:21793, 貢獻者數:842)
Scikits是Scikits Stack額外的軟體包,專為像圖像處理和機器學習輔助等特定功能而設計。對於機器學習輔助,scikit-learn是所有軟體包里最突出的一個。它建立在SciPy之上,並大量利用它的數學運算。
scikit-learn給常見的機器學習演算法公開了一個簡潔、一致的介面,可簡單地將機器學習帶入生產系統中。該庫中集成了有質量的代碼和良好的文檔、簡單易用並且十分高效,是使用Python進行機器學習的實際行業標準。
深度學習—— Keras / TensorFlow / Theano
在深度學習方面,Python中最著名和最便的庫之一是Keras,它可以在TensorFlow或Theano框架上運行。讓我們來看一下它們的一些細節。
9、Theano. (提交數:25870, 貢獻者數:300)
首先讓我們談談Theano。
Theano是一個Python軟體包,它定義了與NumPy類似的多維數組,以及數學運算和表達式。此庫是被編譯的,可實現在所有架構上的高效運行。最初由蒙特利爾大學機器學習組開發,它主要用於滿足機器學習的需求。
值得注意的是,Theano緊密結合了NumPy在低層次上的運算 。另外,該庫還優化了GPU和CPU的使用,使數據密集型的計算平台性能更佳。
效率和穩定性微調保證了即使在數值很小的情況下,仍有更精確的結果,例如,即使只給出x的最小值,log(1 + x)仍能計算出合理的結果。
10、TensorFlow. (提交數: 16785,貢獻者數: 795)
TensorFlow來自Google的開發人員,它是數據流圖計算的開源庫,為機器學習不斷打磨。它旨在滿足谷歌對訓練神經網路的高需求,並且是基於神經網路的機器學習系統DistBelief的繼任者。然而,TensorFlow並不限制於谷歌的科學應用範圍 – 它可以通用於多種多樣的現實應用中。
TensorFlow的關鍵特徵是它的多層節點系統,可以在大型數據集上快速訓練神經網路。這為谷歌的語音識別和圖像對象識別提供了支持。
11、Keras. (提交數: 3519,貢獻者數: 428)
最後我們來看看Keras。它是一個用Python編寫的開源的庫,用於在高層的介面上構建神經網路。它簡單易懂,具有高級可擴展性。Keras使用Theano或TensorFlow作為後端,但微軟現在正努力整合CNTK(微軟的認知工具包)作為新的後端。
設計中的簡約方法旨在通過建立緊湊型系統進行快速、簡便的實驗。
Keras真的容易上手,並在持續完善它的快速原型能力。它完全用Python編寫,可被高度模塊化和擴展。儘管它以易上手、簡單和以高層次為導向,但是Keras足夠有深度並且足夠強大,去支持複雜的模型。
谷歌發展趨勢歷史
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
自然語言處理
12、NLTK (提交數: 12449,貢獻者數: 196)
這個庫的名稱「Natural Language Toolkit」,代表自然語言工具包,顧名思義,它用於符號學和統計學自然語言處理(NLP) 的常見任務。 NLTK旨在促進NLP及相關領域(語言學,認知科學人工智慧等)的教學和研究,目前受到重點關注。
NLTK的功能允許很多操作,例如文本標記,分類和標記,實體名稱識別,建立語料庫,可以顯示語言內部和各句子間的依賴性、詞根、語義推理等。所有的構建模塊都可以為不同的任務構建複雜的研究系統,例如情緒分析,自動總結。
13、Gensim (提交數: 2878,貢獻者數: 179)
它是一個用於Python的開源庫,為有向量空間模型和主題模型的工作提供了使用工具。這個庫是為了高效處理大量文本而設計的,所以不僅可以進行內存處理,還可以通過廣泛使用NumPy數據結構和SciPy操作來獲得更高的效率。Gensim高效也易於使用。
Gensim旨在與原始和非結構化的數字文本一起使用。 它實現了諸如hierarchical Dirichlet processes(HDP),潛在語義分析(LSA)和潛在Dirichlet分配(LDA)之類的演算法,以及tf-idf,隨機預測,word2vec和document2vec,便於檢查一組文檔中有重複模式的文本 (通常稱為語料庫)。所有的演算法均是無監督的,意味著不需要任何參數,唯一的輸入只有語料庫。
谷歌發展趨勢歷史
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
數據挖掘,統計學
14、Scrapy (提交數: 6325,貢獻者數: 243)
Scrapy庫是用於從網路結構化檢索數據(如聯繫人信息或URL),可以用來設計crawling程序(也稱為蜘蛛bots)。
它是開源的,使用用Python編寫的。最開始只是如它的名字暗示的一樣,只用來做scraping,但是它現在已經在完整的框架中發展,能夠從API採集數據並作為通用的crawlers了。
該庫在界面設計中標榜著「不要重複自己」 它推薦用戶們編寫泛化得到、可被重複使用的通用代碼,從而構建和擴展大型的crawlers。
Scrapy的架構圍繞著Spider class構建,這其中包含了crawler追從的一套指令。
15. Statsmodels (提交數: 8960,貢獻者數: 119)
你可能從名字就猜出大概了,statsmodels使用戶能夠通過使用各種統計模型的估算方法進行數據挖掘,並執行統計判斷和分析。
許多有用的特徵是可被描述的,並通過使用線性回歸模型,廣義線性模型,離散選擇模型,魯棒線性模型,時間序列分析模型,各種估計方法得出統計結果。
這個庫還提供了廣泛的標定功能,專門用於大數據統計中的性能優化工作。
總結
許多數據科學家和工程師認為這些庫是頂級的,並值得關注,或者需要或多或少了解它們。 以下是每個庫在Github上的詳細統計資料:
當然,這不是完全詳盡的列表,還有許多其他的庫和框架也是值得關注。一個很好的例子是SciKit的不同軟體包各自專註一個特定的領域,如SciKit-Image是用於處理圖像的。
來自:雷鋒網
鏈接:https://www.leiphone.com/news/201706/SP8YmNMNi2kSbUcE.html
本文作者為 ActiveWizards 的數據顧問 Igor Bobriakov,雷鋒網林立宏與 Raey Raey Li 編譯。
Python開發整理髮布,轉載請聯繫作者獲得授
權。
※調查報告:Python成最熱門工具!近半程序員認為上級技術水平不如自己!
※IEEE發布2017年編程語言排行榜:Python高居首位,PHP第8,猜猜Swift和OC排第幾
TAG:Python開發 |
※2017 年關於 Python的12 件大事
※2017 年關於 Python 的 12 件大事
※2017年5個不能錯過的Python庫
※從2007到2017看iPhone十年進化史,走向iPhone X的旅程
※2017年iPhone銷量低於2016年,但Apple Watch卻迎來春天
※2018款MacBook Pro和2017款的10大區別:買前值得一看!
※2017年Q4 iPhone在中國增長10%
※2017年iPhone銷量低於2016年
※2018年蘋果iPad與2017年蘋果iPad有什麼不同?速度和鉛筆
※2017蘋果iPhone銷量低於2016年
※Thank you 2017,150套穿搭回顧
※2017年steam賺了43億美金,為最賺錢一年
※2017年Behance上最優秀的UI設計都有哪些?
※2018 iPad vs.2017 iPad跑分對比
※AA加速器6期demoday 吳玲偉眼中的2017-2018
※2017年阿迪達斯10大最佳adidas Shoes
※2017年10篇優秀的Python文章
※新iPad 2018 vs iPad 2017
※2018/2017年款iPad以及10.5英寸iPad Pro續航測試
※谷歌在2017年拿下了超過70萬的Android應用程序