標籤: Bokeh, Data Science, Keras, Matplotlib, NLTK, numpy, Pandas, Plotly, Python, PyTorch, scikit-learn, SciPy, Seaborn, TensorFlow, XGBoosthtml
原文做者: ActiveWizardspython
原文地址:Top 20 Python Libraries for Data Science in 2018git
歡迎來個人簡書:呆鳥的譯Py胡言github
Python今年依舊保持着數據科學領域的領先地位。去年,咱們在博客上列出了15個頂級Python數據科學庫的榜單,當時你們都以爲很是好。此次,介紹一下這些頂級數據科學Python庫今年有哪些更新,同時,咱們還爲這個榜單添加了一些新庫。算法
實際上,此次的榜單不止20個庫,主要是由於如今某些領域裏有多個庫都能解決相同的問題,並且暫時也很差說哪一個庫能成爲領頭羊,所以,咱們將這些庫分爲一組,供你們選擇。後端
1. NumPy (提交修改: 17911, 貢獻者: 641)數組
按慣例,本榜單首先列出科學應用庫,Numpy是這一類的首選,它是處理大型多維數組、矩陣及高級數學函數的工具集合,提供了多種數據操做方法。瀏覽器
今年,Numpy進行了不少改進。除了修復Bug和增強兼容性外,關鍵的改進是增長了可選樣式,即Numpy對象的打印格式。此外,還增長了新的功能,只要是Python支持的編碼,Numpy就能夠處理使用這些編碼的文件。安全
2. SciPy (提交修改: 19150, 貢獻者: 608)服務器
科學計算的的另外一個核心庫是SciPy。SciPy基於Numpy,擴展了Numpy的功能,它的核心數據結構是用Numpy實現的多維數組。這個庫包含了一組處理線性代數、機率論、積分學等任務的工具。
SciPy的主要改進包括對不一樣操做系統的集成,增長了新的函數與方法,值得一提的是,SciPy更新了優化器。此外,還打包了很多新的BLAS[^1]和LAPACK[^2]函數。
[^1]: BLAS的全稱是Basic Linear Algebra Subprograms,即基礎線性代數子程序,是一系列API規範,如向量、矩陣之間的乘法等。 [^2]: LAPACK的全稱是linear algebra package,即線性代數庫,其底層是BLAS,在此基礎上定義了不少矩陣和向量高級運算的函數,如矩陣分解、求逆和求奇異值等。LAPACK是科學計算(矩陣運算)的接口規範,運行效率比BLAS更高。
3. Pandas (提交修改: 17144, 貢獻者: 1165)
Pandas提供了高層數據結構和大量的分析工具。這個庫最牛的地方是能夠用一兩條命令實現不少複雜的數據分析操做。Pandas內建了不少方法,好比分組、篩選、合併數據及時間序列等功能,而且,這些操做的運算速度都很是快。
今年,Pandas進行了數百項優化,包括增長了新特性、修復了Bug、改進了API。這些優化主要集中在提高Pandas分組和排序數據的能力,提供了更適用的apply方法的輸出結果,還爲操做自定義類型提供了支持。
4. StatsModels (提交修改: 10067, 貢獻者: 153)
Statsmodels是進行統計數據分析的Python模塊,好比,評估統計模型、執行統計測試等。有了Statsmodels,就能夠實現不少機器學習方法,探索不一樣圖形的繪圖可能性。
Statsmodels還在不斷開發升級,未來會提供愈來愈多的新特性。今年,Statsmodels引入了時間序列和新的技術模型,如,廣義泊松、零膨脹模型、負二項式分佈等,它還提供了一些新的多元方法,如,因子分析、多元方差分析(MANOVA)和方差分析(ANOVA)的重複測量等。
5. Matplotlib (提交修改: 25747, 貢獻者: 725)
Matplotlib是建立二維圖形的底層庫。使用Matplotlib能夠建立直方圖、散點圖、非笛卡爾座標圖等多種圖形,而且,大部分流行繪圖庫都與Matplotlib兼容,能夠進行交互操做。
今年,Matplotlib優化了顏色、字體、尺寸、圖例等樣式。好比,它對外觀的優化包括了自動對齊圖例,還改進了色彩,新採用的色相環即使是色盲也能夠看。
6. Seaborn (提交修改: 2044, 貢獻者: 83)
Seaborn是基於Matplotlib開發的高層API,與Matplotlib相比,它提供了更多實用的默認圖形,包括諸如時間序列、Jointplot和小提琴圖這樣的可視化圖。
2018年上半年,Seaborn的升級主要是修復Bug。同時,還改進了FaceGrid和PairGrid與Matplotlib加強型交互後端的兼容性,併爲可視化圖增長了參數和選項。
7. Plotly (提交修改: 2906, 貢獻者: 48)
使用Plotly能夠輕易地生成複雜的圖形,這個庫能夠用來開發交互式的網頁應用,還能夠生成很是華麗的等高線圖、三角圖及3D圖。
今年,Plotly的優化主要在於提供了不少新的圖形和特性,引入了對動畫與串擾集成等多重連接視圖的支持。
8. Bokeh (提交修改: 16983, 貢獻者: 294)
Bokeh使用JavaScript Widget,用於建立可在瀏覽器中查看的交互式、矢量化的可視化圖。經過連接圖形、添加Widget和回調函數等實用特性,Bokeh提供了不少圖形、樣式以及交互功能。
Bokeh今年優化的交互功能仍是可圈可點的,好比說,旋轉式類別圖例標籤,縮放工具、加強型自定義工具提示字段等。
9. Pydot (提交修改: 169, 貢獻者: 12)
Pydot是生成複雜定向圖與非定向圖的庫,它是Python開發的Graphviz^3接口。有了Pydot,就能夠展現結構化的圖形,構建神經網絡圖與基於算法的決策樹等圖形。
10. scikit-learn (提交修改: 22753, 貢獻者: 1084)
scikit-learn是最強大的數據處理庫之一,它是基於Numpy和SciPy的Python模塊。scikit-learn提供了不少標準機器學習與數據挖掘算法,好比,分類、聚類、迴歸、降維與模型選擇等。
2018年上半年,scikit-learn作了不少改進。優化了交叉驗證,使其可使用一個以上的指標;完善了最近鄰和邏輯迴歸等幾個訓練方法;還有一點是終於推出了通用術語與API元素術語表,有了這個術語表就能夠很方便地瞭解scikit-learn的專業術語和使用約定。
11. XGBoost / LightGBM / CatBoost (提交修改: 3277 / 1083 / 1509, 貢獻者: 280 / 79 / 61)
梯度加強是機器學習裏最流行的算法,這個算法是基於決策樹等持續精化的基本模型集合構建的。所以,如今出現了一些爲了快速、便捷實現這種方法而設計的專用庫。咱們認爲 XGBoost、LightGBM與CatBoost值得特別關注。它們都是解決梯度加強問題的競爭者,使用方式也幾乎相同。XGBoost這幾個庫提供了高度優化、可擴展、可快速實現的梯度加強算法,這些優點讓它們在如今的數據科學界裏很是流行;甚至,因爲其算法對贏得Kaggle比賽有很大幫助,如今不少參賽者也喜歡用這些庫來解決Kaggle比賽問題。
12. Eli5 (提交修改: 922, 貢獻者: 6)
機器學習模型預測的結果每每並不一目瞭然,沒法讓人輕易就能理解,Eli5就是爲了解決這一痛點而開發的。Eli5用於將機器學習模型進行可視化,並進行Debug,能夠一步一步追蹤算法的執行步驟。Eli5支持scikit-learn、XGBoost、LightGBM、lightning和sklearn-crfsuite等庫,可以爲這些庫執行不一樣的監控任務。
13. TensorFlow (提交修改: 33339, 貢獻者: 1469)
TensorFlow是谷歌大腦開發的、超級火爆的深度學習與機器學習框架,它使用人工神經網絡處理多重數據集。TensorFlow普遍應用於對象識別、語音識別等業務,如今還出現了很多基於TensorFlow建立的高層輔助器,好比tflearn、tf-slim和skflow等。
TensorFlow還在快速迭代,今年發佈了很多更新版本,提供了不少新特性。好比,最新的版本修復了潛在的安全隱患,改進了TensorFlow與GPU的集成,可讓TensorFlow在一臺機器上使用多個GPU運行評估期模型。
14. PyTorch (提交修改: 11306, 貢獻者: 635)
PyTorch是一個大型框架,容許用戶使用GPU加速張量計算、建立動態計算圖、自動計算梯度值。PyTorch還提供了豐富的API接口,用於解決神經網絡的相關應用。
PyTorch是基於Torch這個開源深度學習開源庫建立的,2017年才引入了Python API接口。從那時起,PyTorch就變得很是流行,吸引了愈來愈多的數據科學家用戶。
15. Keras (提交修改: 4539, 貢獻者: 671)
Keras是運行在TensorFlow和Theano之上的高層神經網絡庫,最新版本還能夠將CNTK和MxNet做爲後端。Keras簡化了任務操做,大大地減小了編寫代碼的工做量。然而,對於一些複雜的任務,Keras並非十分適用。
今年,Keras優化了性能、可用性、文檔和API,增長了Conv3D轉置層、MobileNet應用與自歸一網絡等新特性。
16. Dist-keras / elephas / spark-deep-learning (提交修改: 1125 / 170 / 67, 貢獻者: 5 / 13 / 11)
現在,愈來愈多的用例處理工做須要消耗極爲龐大的資源與時間,所以,大規模數據的深度學習問題已經變得很是嚴峻了。然而,隨着Apache Spark等分佈式計算系統拓展到深度學習領域,處理這種大規模數據就變得簡單了。所以,dist-keras、elephas和spark-deep-learning這樣的庫很快就應運而生,開發速度也很是快。只不過這些庫如今都旨在解決一樣的問題,目前還看不出來誰可以脫穎而出。這些庫能夠經過Keras直接調用Apache Spark訓練神經網絡,Spark-deep-learning還提供了構建Python神經網絡管道的工具。
17. NLTK (提交修改: 13041, 貢獻者: 236)
NLTK是天然語言處理的平臺。可使用NLTK處理、分析文本,進行分詞、標記、信息提取等工做,還可使用NLTK搭建原型和調研系統。
NLTK今年的改進很少,主要是優化了API和兼容性,以及提供了一個新的CoreNLP的接口。
18. SpaCy (提交修改: 8623, 貢獻者: 215)
SpaCy這個天然語言處理庫提供了不少好用的例程、API文檔和應用Demo。SpaCy是使用Cython開發的,支持超過30種語言,能夠輕鬆地與深度學習集成,還能保證穩健、精準的結果。
SpaCy還有一個很是實用的特性,就是它的設計架構很好,不須要將文檔分段就能夠處理整個文檔。
19. Gensim (提交修改: 3603, 貢獻者: 273)
Gensim是基於Numpy和Scipy的Python庫,能夠進行語義分析、主題建模和向量空間建模。它提供了word2vec等NLP算法。雖然Gensim有本身的models.wrappers.fasttext,可是fasttext這個庫也能夠用於高效的詞表徵學習。
20. Scrapy (提交修改: 6625, 貢獻者: 281)
Scrapy是用來構建爬蟲機器人掃描網頁,採集結構化數據的Python庫,Scrapy還能夠經過API提取數據。Scrapy支持擴展和移植,用起來很是順手。
今年Scrapy有不少升級,優化了Proxy服務器,改進了錯誤提示與問題識別系統,推出了使用Scrapy解析元數據設置的新功能。
以上就是咱們的2018年上半年的Python數據科學庫榜單。與去年相比,經典的數據科學庫仍在不斷地完善、優化,與此同時,這個領域裏也出現了很多新興的數據科學庫。
最後,給你們呈上Github上這些庫的活躍表。
**ActiveWizards**是由數據科學家和數據工程師組成的團隊,關注於大數據、數據科學、機器學習、數據可視化等數據項目。咱們的核心專業領域包括數據科學(數據研究、機器學習算法與數據開發),數據可視化(D3.js、Tableau等)、大數據開發(Hadoop、Spark、Kafka、Cassandra、HBASE、MongoDB等)及數據密集型Web應用開發(RESTful API、Flask、Django和Meteor等)。