近年來虐沥,Python 在數(shù)據(jù)科學(xué)行業(yè)扮演著越來越重要的角色熊经。因此泽艘,我根據(jù)近來的使用體驗(yàn)欲险,在本文中列出了對數(shù)據(jù)科學(xué)家镐依、工程師們最有用的那些庫。
由于這些庫都開源了天试,我們從Github上引入了提交數(shù)槐壳,貢獻(xiàn)者數(shù)和其他指標(biāo),這可以作為庫流行程度的參考指標(biāo)喜每。
核心庫
1. NumPy (提交數(shù): 15980, 貢獻(xiàn)者數(shù): 522)
當(dāng)開始處理Python中的科學(xué)任務(wù)务唐,Python的SciPy Stack肯定可以提供幫助,它是專門為Python中科學(xué)計(jì)算而設(shè)計(jì)的軟件集合(不要混淆SciPy庫带兜,它是SciPy Stack的一部分枫笛,和SciPy Stack的社區(qū))這樣我們開始來看一下吧。然而刚照,SciPy Stack相當(dāng)龐大刑巧,其中有十幾個庫,我們把焦點(diǎn)放在核心包上(特別是最重要的)无畔。
關(guān)于建立科學(xué)計(jì)算棧啊楚,最基本的包是Numpy(全稱為Numerical Python)。它為Python中的n維數(shù)組和矩陣的操作提供了大量有用的功能浑彰。該庫提供了NumPy數(shù)組類型的數(shù)學(xué)運(yùn)算向量化恭理,可以改善性能,從而加快執(zhí)行速度郭变。
2. SciPy (提交數(shù): 17213, 貢獻(xiàn)者數(shù): 489)
SciPy是一個工程和科學(xué)軟件庫颜价。雷鋒網(wǎng)(公眾號:雷鋒網(wǎng))再次提醒,你需要理解SciPy Stack和SciPy庫之間的區(qū)別诉濒。
SciPy包含線性代數(shù)周伦,優(yōu)化,集成和統(tǒng)計(jì)的模塊循诉。SciPy庫的主要功能是建立在NumPy上横辆,從而它的數(shù)組大量的使用了NumPy的。它通過其特定子模塊提供有效的數(shù)值例程茄猫,并作為數(shù)字積分狈蚤、優(yōu)化和其他例程。SciPy的所有子模塊中的功能都有詳細(xì)的說明 ——又是一個SciPy非常有幫助的點(diǎn)划纽。
3. Pandas (提交數(shù): 15089, 貢獻(xiàn)者數(shù):762)
Pandas是一個Python包脆侮,旨在通過“標(biāo)記”和“關(guān)系”數(shù)據(jù)進(jìn)行工作,簡單直觀勇劣。Pandas是數(shù)據(jù)整理的完美工具靖避。它設(shè)計(jì)用于快速簡單的數(shù)據(jù)操作潭枣,聚合和可視化。
庫中有兩個主要的數(shù)據(jù)結(jié)構(gòu):
-
“系列”(Series)幻捏,一維
2017盆犁,最受歡迎的 15 大 Python 庫有哪些? -
“數(shù)據(jù)幀”(Data Frames)篡九,二維
2017谐岁,最受歡迎的 15 大 Python 庫有哪些?
例如榛臼,當(dāng)您要從這兩種類型的結(jié)構(gòu)中接收到一個新的Dataframe時伊佃,通過傳遞一個Series,您將收到一個單獨(dú)的行到DataFrame的DF:
這里稍微列出了你可以用Pandas做的事情:
輕松刪除并添加數(shù)據(jù)幀(DataFrame)中的列
將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)據(jù)幀(DataFrame)對象
處理丟失的數(shù)據(jù),表示為NaN
功能強(qiáng)大的分組
Google趨勢記錄
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
可視化
4.Matplotlib (提交數(shù): 21754, 貢獻(xiàn)者數(shù): 588)
又一個SciPy Stack核心軟件包以及 Python庫漠秋,Matplotlib為輕松生成簡單而強(qiáng)大的可視化而量身定制。它是一個頂尖的軟件(在NumPy,SciPy和Pandas的幫助下),它使Python成為像MatLab或Mathematica這樣的科學(xué)工具的競爭對手硼婿。
然而,這個庫是低層級的搂抒,這意味著你需要編寫更多的代碼才能達(dá)到高級的可視化效果,而且通常會比使用更多的高級工具付出更多的努力尿扯,但總體上這些努力是值得的求晶。
只要付出一點(diǎn)你就可以做任何可視化:
- 線圖
- 散點(diǎn)圖
- 條形圖和直方圖
- 餅狀圖;
- 莖圖
- 輪廓圖
- 場圖
- 頻譜圖
還有使用Matplotlib創(chuàng)建標(biāo)簽,網(wǎng)格衷笋,圖例和許多其他格式化實(shí)體的功能芳杏。基本上辟宗,一切都是可定制的爵赵。
該庫由不同的平臺支持,并使用不同的GUI套件來描述所得到的可視化泊脐。不同的IDE(如IPython)都支持Matplotlib的功能空幻。
還有一些額外的庫可以使可視化變得更加容易。
5. Seaborn (提交數(shù): 1699, 貢獻(xiàn)者數(shù): 71)
Seaborn主要關(guān)注統(tǒng)計(jì)模型的可視化约郁;這種可視化包括熱圖,這些熱圖(heat map)總結(jié)數(shù)據(jù)但仍描繪整體分布但两。Seaborn基于Matplotlib鬓梅,并高度依賴于此。
6. Bokeh (提交數(shù): 15724, 貢獻(xiàn)者數(shù): 223)
另一個很不錯的可視化庫是Bokeh士袄,它針對交互式可視化悲关。與以前的庫相比,它獨(dú)立于Matplotlib娄柳。正如我們提到的寓辱,Bokeh的主要焦點(diǎn)是交互性,它通過現(xiàn)代瀏覽器以數(shù)據(jù)驅(qū)動文檔(d3.js)的風(fēng)格呈現(xiàn)赤拒。
7. Plotly (提交數(shù): 2486, 貢獻(xiàn)者數(shù): 33)
最后挎挖,關(guān)于Plotly的話这敬。它是一個基于Web用于構(gòu)建可視化的工具箱,提供API給一些編程語言(Python在內(nèi))蕉朵。在plot.ly網(wǎng)站上有一些強(qiáng)大的崔涂、上手即用的圖形。為了使用Plotly始衅,你將需要設(shè)置API密鑰冷蚂。圖形將在服務(wù)器端處理,并發(fā)布到互聯(lián)網(wǎng)汛闸,但有一種方法可以避免蝙茶。
Google趨勢記錄
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
機(jī)器學(xué)習(xí)
8. SciKit-Learn (提交數(shù):21793, 貢獻(xiàn)者數(shù):842)
Scikits是Scikits Stack額外的軟件包,專為像圖像處理和機(jī)器學(xué)習(xí)輔助等特定功能而設(shè)計(jì)畸肆。對于機(jī)器學(xué)習(xí)輔助宦芦,scikit-learn是所有軟件包里最突出的一個。它建立在SciPy之上轴脐,并大量利用它的數(shù)學(xué)運(yùn)算调卑。
scikit-learn給常見的機(jī)器學(xué)習(xí)算法公開了一個簡潔抡砂、一致的接口,可簡單地將機(jī)器學(xué)習(xí)帶入生產(chǎn)系統(tǒng)中恬涧。該庫中集成了有質(zhì)量的代碼和良好的文檔注益、簡單易用并且十分高效,是使用Python進(jìn)行機(jī)器學(xué)習(xí)的實(shí)際行業(yè)標(biāo)準(zhǔn)溯捆。
深度學(xué)習(xí)—— Keras / TensorFlow / Theano
在深度學(xué)習(xí)方面丑搔,Python中最著名和最便的庫之一是Keras,它可以在TensorFlow或Theano框架上運(yùn)行提揍。讓我們來看一下它們的一些細(xì)節(jié)啤月。
9.Theano. (提交數(shù):25870, 貢獻(xiàn)者數(shù):300)
首先讓我們談?wù)凾heano。
Theano是一個Python軟件包劳跃,它定義了與NumPy類似的多維數(shù)組谎仲,以及數(shù)學(xué)運(yùn)算和表達(dá)式。此庫是被編譯的刨仑,可實(shí)現(xiàn)在所有架構(gòu)上的高效運(yùn)行郑诺。最初由蒙特利爾大學(xué)機(jī)器學(xué)習(xí)組開發(fā),它主要用于滿足機(jī)器學(xué)習(xí)的需求杉武。
值得注意的是辙诞,Theano緊密結(jié)合了NumPy在低層次上的運(yùn)算 。另外轻抱,該庫還優(yōu)化了GPU和CPU的使用飞涂,使數(shù)據(jù)密集型的計(jì)算平臺性能更佳。
效率和穩(wěn)定性微調(diào)保證了即使在數(shù)值很小的情況下十拣,仍有更精確的結(jié)果封拧,例如,即使只給出x的最小值夭问,log(1 + x)仍能計(jì)算出合理的結(jié)果泽西。
10. TensorFlow. (提交數(shù): 16785,貢獻(xiàn)者數(shù): 795)
TensorFlow來自Google的開發(fā)人員,它是數(shù)據(jù)流圖計(jì)算的開源庫缰趋,為機(jī)器學(xué)習(xí)不斷打磨捧杉。它旨在滿足谷歌對訓(xùn)練神經(jīng)網(wǎng)絡(luò)的高需求,并且是基于神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)系統(tǒng)DistBelief的繼任者秘血。然而味抖,TensorFlow并不限制于谷歌的科學(xué)應(yīng)用范圍 – 它可以通用于多種多樣的現(xiàn)實(shí)應(yīng)用中。
TensorFlow的關(guān)鍵特征是它的多層節(jié)點(diǎn)系統(tǒng)灰粮,可以在大型數(shù)據(jù)集上快速訓(xùn)練神經(jīng)網(wǎng)絡(luò)仔涩。這為谷歌的語音識別和圖像對象識別提供了支持。
11. Keras. (提交數(shù): 3519,貢獻(xiàn)者數(shù): 428)
最后我們來看看Keras粘舟。它是一個用Python編寫的開源的庫熔脂,用于在高層的接口上構(gòu)建神經(jīng)網(wǎng)絡(luò)佩研。它簡單易懂,具有高級可擴(kuò)展性霞揉。Keras使用Theano或TensorFlow作為后端旬薯,但微軟現(xiàn)在正努力整合CNTK(微軟的認(rèn)知工具包)作為新的后端。
設(shè)計(jì)中的簡約方法旨在通過建立緊湊型系統(tǒng)進(jìn)行快速适秩、簡便的實(shí)驗(yàn)绊序。
Keras真的容易上手,并在持續(xù)完善它的快速原型能力秽荞。它完全用Python編寫骤公,可被高度模塊化和擴(kuò)展。盡管它以易上手蚂会、簡單和以高層次為導(dǎo)向淋样,但是Keras足夠有深度并且足夠強(qiáng)大,去支持復(fù)雜的模型胁住。
谷歌發(fā)展趨勢歷史
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
自然語言處理
12. NLTK (提交數(shù): 12449,貢獻(xiàn)者數(shù): 196)
這個庫的名稱“Natural Language Toolkit”娱挨,代表自然語言工具包余指,顧名思義,它用于符號學(xué)和統(tǒng)計(jì)學(xué)自然語言處理(NLP) 的常見任務(wù)跷坝。 NLTK旨在促進(jìn)NLP及相關(guān)領(lǐng)域(語言學(xué)酵镜,認(rèn)知科學(xué)人工智能等)的教學(xué)和研究,目前受到重點(diǎn)關(guān)注柴钻。
NLTK的功能允許很多操作淮韭,例如文本標(biāo)記,分類和標(biāo)記贴届,實(shí)體名稱識別靠粪,建立語料庫,可以顯示語言內(nèi)部和各句子間的依賴性毫蚓、詞根占键、語義推理等。所有的構(gòu)建模塊都可以為不同的任務(wù)構(gòu)建復(fù)雜的研究系統(tǒng)元潘,例如情緒分析畔乙,自動總結(jié)。
13. Gensim (提交數(shù): 2878,貢獻(xiàn)者數(shù): 179)
它是一個用于Python的開源庫翩概,為有向量空間模型和主題模型的工作提供了使用工具牲距。這個庫是為了高效處理大量文本而設(shè)計(jì)的袖订,所以不僅可以進(jìn)行內(nèi)存處理,還可以通過廣泛使用NumPy數(shù)據(jù)結(jié)構(gòu)和SciPy操作來獲得更高的效率嗅虏。Gensim高效也易于使用洛姑。
Gensim旨在與原始和非結(jié)構(gòu)化的數(shù)字文本一起使用。 它實(shí)現(xiàn)了諸如hierarchical Dirichlet processes(HDP)皮服,潛在語義分析(LSA)和潛在Dirichlet分配(LDA)之類的算法楞艾,以及tf-idf,隨機(jī)預(yù)測龄广,word2vec和document2vec硫眯,便于檢查一組文檔中有重復(fù)模式的文本 (通常稱為語料庫)。所有的算法均是無監(jiān)督的择同,意味著不需要任何參數(shù)两入,唯一的輸入只有語料庫。
谷歌發(fā)展趨勢歷史
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
數(shù)據(jù)挖掘剃氧,統(tǒng)計(jì)學(xué)
14. Scrapy (提交數(shù): 6325,貢獻(xiàn)者數(shù): 243)
Scrapy庫是用于從網(wǎng)絡(luò)結(jié)構(gòu)化檢索數(shù)據(jù)(如聯(lián)系人信息或URL),可以用來設(shè)計(jì)crawling程序(也稱為蜘蛛bots)。
它是開源的阻星,使用用Python編寫的朋鞍。最開始只是如它的名字暗示的一樣,只用來做scraping妥箕,但是它現(xiàn)在已經(jīng)在完整的框架中發(fā)展滥酥,能夠從API采集數(shù)據(jù)并作為通用的crawlers了。
該庫在界面設(shè)計(jì)中標(biāo)榜著“不要重復(fù)自己” 它推薦用戶們編寫泛化得到畦幢、可被重復(fù)使用的通用代碼坎吻,從而構(gòu)建和擴(kuò)展大型的crawlers。
Scrapy的架構(gòu)圍繞著Spider class構(gòu)建呛讲,這其中包含了crawler追從的一套指令禾怠。
15. Statsmodels (提交數(shù): 8960,貢獻(xiàn)者數(shù): 119)
你可能從名字就猜出大概了,statsmodels使用戶能夠通過使用各種統(tǒng)計(jì)模型的估算方法進(jìn)行數(shù)據(jù)挖掘贝搁,并執(zhí)行統(tǒng)計(jì)判斷和分析吗氏。
許多有用的特征是可被描述的,并通過使用線性回歸模型雷逆,廣義線性模型弦讽,離散選擇模型,魯棒線性模型,時間序列分析模型往产,各種估計(jì)方法得出統(tǒng)計(jì)結(jié)果被碗。
這個庫還提供了廣泛的標(biāo)定功能,專門用于大數(shù)據(jù)統(tǒng)計(jì)中的性能優(yōu)化工作仿村。