天天看點

2017,最受歡迎的 15 大 Python 庫有哪些?

近年來,python 在資料科學行業扮演着越來越重要的角色。是以,我根據近來的使用體驗,在本文中列出了對資料科學家、工程師們最有用的那些庫。

由于這些庫都開源了,我們從github上引入了送出數,貢獻者數和其他名額,這可以作為庫流行程度的參考名額。

當開始處理python中的科學任務,python的scipy stack肯定可以提供幫助,它是專門為python中科學計算而設計的軟體集合(不要混淆scipy庫,它是scipy stack的一部分,和scipy stack的社群)這樣我們開始來看一下吧。然而,scipy stack相當龐大,其中有十幾個庫,我們把焦點放在核心包上(特别是最重要的)。

關于建立科學計算棧,最基本的包是numpy(全稱為numerical python)。它為python中的n維數組和矩陣的操作提供了大量有用的功能。該庫提供了numpy數組類型的數學運算向量化,可以改善性能,進而加快執行速度。

scipy是一個工程和科學軟體庫。雷鋒網(公衆号:雷鋒網)再次提醒,你需要了解scipy stack和scipy庫之間的差別。

scipy包含線性代數,優化,內建和統計的子產品。scipy庫的主要功能是建立在numpy上,進而它的數組大量的使用了numpy的。它通過其特定子子產品提供有效的數值例程,并作為數字積分、優化和其他例程。scipy的所有子子產品中的功能都有詳細的說明 ——又是一個scipy非常有幫助的點。

pandas是一個python包,旨在通過“标記”和“關系”資料進行工作,簡單直覺。pandas是資料整理的完美工具。它設計用于快速簡單的資料操作,聚合和可視化。

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

“系列”(series),一維

2017,最受歡迎的 15 大 Python 庫有哪些?

“資料幀”(data frames),二維

2017,最受歡迎的 15 大 Python 庫有哪些?

例如,當您要從這兩種類型的結構中接收到一個新的dataframe時,通過傳遞一個series,您将收到一個單獨的行到dataframe的df:

2017,最受歡迎的 15 大 Python 庫有哪些?

 這裡稍微列出了你可以用pandas做的事情:

輕松删除并添加資料幀(dataframe)中的列

将資料結構轉換為資料幀(dataframe)對象

處理丢失的資料,表示為nan

功能強大的分組

google趨勢記錄

2017,最受歡迎的 15 大 Python 庫有哪些?

trends.google.com

github請求曆史記錄

2017,最受歡迎的 15 大 Python 庫有哪些?

datascience.com/trends 

又一個scipy stack核心軟體包以及 python庫,matplotlib為輕松生成簡單而強大的可視化而量身定制。它是一個頂尖的軟體(在numpy,scipy和pandas的幫助下),它使python成為像matlab或mathematica這樣的科學工具的競争對手。

然而,這個庫是低層級的,這意味着你需要編寫更多的代碼才能達到進階的可視化效果,而且通常會比使用更多的進階工具付出更多的努力,但總體上這些努力是值得的。

隻要付出一點你就可以做任何可視化:

線圖 散點圖 條形圖和直方圖 餅狀圖; 莖圖 輪廓圖 場圖 頻譜圖

還有使用matplotlib建立标簽,網格,圖例和許多其他格式化實體的功能。基本上,一切都是可定制的。

該庫由不同的平台支援,并使用不同的gui套件來描述所得到的可視化。不同的ide(如ipython)都支援matplotlib的功能。

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

2017,最受歡迎的 15 大 Python 庫有哪些?

seaborn主要關注統計模型的可視化;這種可視化包括熱圖,這些熱圖(heat map)總結資料但仍描繪整體分布。seaborn基于matplotlib,并高度依賴于此。

2017,最受歡迎的 15 大 Python 庫有哪些?

另一個很不錯的可視化庫是bokeh,它針對互動式可視化。與以前的庫相比,它獨立于matplotlib。正如我們提到的,bokeh的主要焦點是互動性,它通過現代浏覽器以資料驅動文檔(d3.js)的風格呈現。

2017,最受歡迎的 15 大 Python 庫有哪些?

最後,關于plotly的話。它是一個基于web用于建構可視化的工具箱,提供api給一些程式設計語言(python在内)。在plot.ly網站上有一些強大的、上手即用的圖形。為了使用plotly,你将需要設定api密鑰。圖形将在伺服器端處理,并釋出到網際網路,但有一種方法可以避免。

2017,最受歡迎的 15 大 Python 庫有哪些?
2017,最受歡迎的 15 大 Python 庫有哪些?
2017,最受歡迎的 15 大 Python 庫有哪些?

datascience.com/trends

scikits是scikits stack額外的軟體包,專為像圖像處理和機器學習輔助等特定功能而設計。對于機器學習輔助,scikit-learn是所有軟體包裡最突出的一個。它建立在scipy之上,并大量利用它的數學運算。

scikit-learn給常見的機器學習算法公開了一個簡潔、一緻的接口,可簡單地将機器學習帶入生産系統中。該庫中內建了有品質的代碼和良好的文檔、簡單易用并且十分高效,是使用python進行機器學習的實際行業标準。

在深度學習方面,python中最着名和最便的庫之一是keras,它可以在tensorflow或theano架構上運作。讓我們來看一下它們的一些細節。 

首先讓我們談談theano。

theano是一個python軟體包,它定義了與numpy類似的多元數組,以及數學運算和表達式。此庫是被編譯的,可實作在所有架構上的高效運作。最初由蒙特利爾大學機器學習組開發,它主要用于滿足機器學習的需求。

值得注意的是,theano緊密結合了numpy在低層次上的運算 。另外,該庫還優化了gpu和cpu的使用,使資料密集型的計算平台性能更佳。

效率和穩定性微調保證了即使在數值很小的情況下,仍有更精确的結果,例如,即使隻給出x的最小值,log(1 + x)仍能計算出合理的結果。

tensorflow來自google的開發人員,它是資料流圖計算的開源庫,為機器學習不斷打磨。它旨在滿足谷歌對訓練神經網絡的高需求,并且是基于神經網絡的機器學習系統distbelief的繼任者。然而,tensorflow并不限制于谷歌的科學應用範圍 – 它可以通用于多種多樣的現實應用中。 

tensorflow的關鍵特征是它的多層節點系統,可以在大型資料集上快速訓練神經網絡。這為谷歌的語音識别和圖像對象識别提供了支援。

最後我們來看看keras。它是一個用python編寫的開源的庫,用于在高層的接口上建構神經網絡。它簡單易懂,具有進階可擴充性。keras使用theano或tensorflow作為後端,但微軟現在正努力整合cntk(微軟的認知工具包)作為新的後端。

設計中的簡約方法旨在通過建立緊湊型系統進行快速、簡便的實驗。

keras真的容易上手,并在持續完善它的快速原型能力。它完全用python編寫,可被高度子產品化和擴充。盡管它以易上手、簡單和以高層次為導向,但是keras足夠有深度并且足夠強大,去支援複雜的模型。

谷歌發展趨勢曆史

2017,最受歡迎的 15 大 Python 庫有哪些?
2017,最受歡迎的 15 大 Python 庫有哪些?

這個庫的名稱“natural language toolkit”,代表自然語言工具包,顧名思義,它用于符号學和統計學自然語言處理(nlp) 的常見任務。 nltk旨在促進nlp及相關領域(語言學,認知科學人工智能等)的教學和研究,目前受到重點關注。

nltk的功能允許很多操作,例如文本标記,分類和标記,實體名稱識别,建立語料庫,可以顯示語言内部和各句子間的依賴性、詞根、語義推理等。所有的構模組化塊都可以為不同的任務建構複雜的研究系統,例如情緒分析,自動總結。

它是一個用于python的開源庫,為有向量空間模型和主題模型的工作提供了使用工具。這個庫是為了高效處理大量文本而設計的,是以不僅可以進行記憶體處理,還可以通過廣泛使用numpy資料結構和scipy操作來獲得更高的效率。gensim高效也易于使用。

gensim旨在與原始和非結構化的數字文本一起使用。 它實作了諸如hierarchical dirichlet processes(hdp),潛在語義分析(lsa)和潛在dirichlet配置設定(lda)之類的算法,以及tf-idf,随機預測,word2vec和document2vec,便于檢查一組文檔中有重複模式的文本 (通常稱為語料庫)。所有的算法均是無監督的,意味着不需要任何參數,唯一的輸入隻有語料庫。 

2017,最受歡迎的 15 大 Python 庫有哪些?
2017,最受歡迎的 15 大 Python 庫有哪些?

scrapy庫是用于從網絡結構化檢索資料(如聯系人資訊或url),可以用來設計crawling程式(也稱為蜘蛛bots)。

它是開源的,使用用python編寫的。最開始隻是如它的名字暗示的一樣,隻用來做scraping,但是它現在已經在完整的架構中發展,能夠從api采集資料并作為通用的crawlers了。

該庫在界面設計中标榜着“不要重複自己”  它推薦使用者們編寫泛化得到、可被重複使用的通用代碼,進而建構和擴充大型的crawlers。

scrapy的架構圍繞着spider class建構,這其中包含了crawler追從的一套指令。

你可能從名字就猜出大概了,statsmodels使使用者能夠通過使用各種統計模型的估算方法進行資料挖掘,并執行統計判斷和分析。

 許多有用的特征是可被描述的,并通過使用線性回歸模型,廣義線性模型,離散選擇模型,魯棒線性模型,時間序列分析模型,各種估計方法得出統計結果。

這個庫還提供了廣泛的标定功能,專門用于大資料統計中的性能優化工作。 

許多資料科學家和工程師認為這些庫是頂級的,并值得關注,或者需要或多或少了解它們。 以下是每個庫在github上的詳細統計資料:

當然,這不是完全詳盡的清單,還有許多其他的庫和架構也是值得關注。一個很好的例子是scikit的不同軟體包各自專注一個特定的領域,如scikit-image是用于處理圖像的。

====================================分割線================================

本文作者:林立宏