選自The data Incubator機器之心編譯參與:蔣思源、黃小天
Python 語言是數據科學中最常見、最受歡迎的工具之一。近日,Data Incubator 發布了一篇題為《15 個排名最佳的數據科學 Python 包》(Ranked: 15 Python Packages for Data Science)的報告,報告作者對數據科學有價值的 15 個 Python 包進行了一個排名,旨在以一種簡單易懂的列表或排名形式幫助數據科學家排序並分析與其專業相關的大量主題。機器之心對報告全文進行了編譯,下載報告 PDF 請點擊文末「閱讀原文」。
排名
Python 和 R 語言是數據科學中最常見、最受歡迎的工具之一。而且因為 Python 的簡單易用,相對其他語言,我們可以使用更少的代碼就能表達大多數概念。
這也就正是為什麼我們希望通過給出最受歡迎的 Python 包排名而幫助數據科學家入門,或幫助對哪些 Python 包使用廣泛有一個了解。
以下就是 Python 包的排名,該排名基於軟體包在 Github 的活躍度和 Stack Overflow 活躍度,其指標為 PyPI(Python 庫的索引)下載量。
該表單展示了標準分,其中 1 代表高於平均值(均值為 0)一個標準差。例如,numpy 在 Stack Overflow activity 中標準分為 2,其表明高於平均值 2 個標準差,而 TensorFlow 就更接近於均值。
對於這一排位表,研究者專注於使用一些標準進行排序,包括機器學習包的排序列表(exhaust list)和三個客觀指標:總下載量、Github 收藏數和 Stack Overflow 問題數量。
然而,可擴展的機器學習包 TensorFlow(起源於谷歌)比其他庫在 Github 上要活躍地多(基於收藏和分享數)。更通用的機器學習模塊 scikit-learn 在 Github 排名第 2,整體排名第 5。
numpy 和 pandas(高性能數據結構和數據分析包)在 Github 上的得分只在中等,但是在其它兩個類別中得分很高。交互式解釋器 ipython 整體排名第 4,而 jupyter project(非常流行的 Python 代碼展示方式)整體排名第 19(未進入排名)。
所有數據截止到 2017 年 1 月 19 日。
見解
Github 活躍度 vs Stack Overflow 活躍度
與頂級軟體包的 Stack Overflow 問題數量和下載量相比,Github 的活躍度似乎存在反相關性。例如,相比於 TensorFlow 和 scikit-learn、numpy 和 pandas 有很多 Stack Overflow 問題,但是 TensorFlow 和 scikit-learn 在 Github 上具有優勢。由於 numpy 和 pandas 是兩個「實用」包,也許實際上有更多的人在使用它們(並且需要幫助)。
在所有核心庫中,numpy 是最受歡迎的(擊敗了 pandas 和 scipy)。numpy 遙遙領先排名第 1,pandas 第 3,ipython 第 4,scipy(一個用於數學、科學和工程學的開源軟體生態系統)第 9。
在神經網絡中,TensorFlow 的表現要優於 Theano
另外一個深度學習包,Theano,在排名中落後 TensorFlow 很多。精心打造的交互式 TensorFlow Playground 可能是 TensorFlow 領先的原因之一。
matplotlib 是最受歡迎的圖形庫
matplotlib(2D 繪圖庫)預料之中地成為了最受歡迎的圖形包,但是排名之中同樣包括 plotly(可以輕鬆在線發布的交互式、出版級別的圖表)和 bokeh(面向現代網頁瀏覽器的交互式可視化庫)。ggpy(R 的流行的 ggplot2 包的 Python 埠)的整體排名是 18,但是其數據較不可靠,正如下一節所述。
局限
如同任何分析一樣,排名的決定是在分析過程中做出的。所有的原始碼和數據都在我們的 Github 上。
機器學習包的完整列表有若干個來源;由於不可用的下載或者 Github 數據,少量包未參與排名。
它們是:basemap(與 matplotlib 映射)、d3py(像 D3 一樣的繪圖)、jupyter-notebook、mlpy(基於 scipy 和 numpy 的機器學習)、 pylearn2(機器學習,基於 theano)、pytables(大表格)和 shogun(機器學習)。和已排名的包相比,它們在所有方面都低於平均水平。
重要的是,Anaconda 分發捆綁了這些包中的很多,並且這並沒有被考慮。
此外,坦白講,一些存在更長時間的包將有更高的指標,因此會有更高的排名。這不會因為任何方式而調整。
排名數據展示的一些注意事項:
ggplot 的 python 埠最近重命名為 ggpy,我們使用 ggpy 作為所有度量(除了下載量,其使用的為 ggplot)。ipython notebook 現在稱為 jupyter notebook。Stack overflow 自動將 ipython-notebook 更正為 jupyter notebook,所以研究者結合了其他兩個來源的 jupyter notebook 結果。但 jupyter notebook 並沒有下載數,所以其並不會出現在最終的排名中。不過研究者分別對 ipython 和 jupyter 進行了研究。Pattern 包在 Stack Overflow 問題指標上已經有很高的得分,因為「pattern」是一個常見詞。因為這個詞沒有標註數據,所以 Stack Overflow 自動將請求「[pattern]」糾正為一些不相關的詞。Stack Overflow 的 plotly 數據可能會增長,因為其是 R 和 Python 包。
資源
原始碼可在 Data Incubator 的 Github 上獲得:https://github.com/thedataincubator/data-science-blogs/
如果你有意了解更多,可考慮查閱以下資源:
Python 包完整排名: https://github.com/thedataincubator/datascience-blogs/blob/master/output/python-ranks-withna.csvTensorflow Playground:http://playground.tensorflow.org/原排名數據(Raw ranking data): https://github.com/thedataincubator/datascience-blogs/blob/master/output/python-data-wide.csvAnaconda 開放數據科學平臺: https://www.continuum.io/anaconda-overviewPyPI 排名:http://pypi-ranking.info/alltimePyPI 下載統計:https://github.com/jantman/pypidownload-statsGithub 的 Fork of vanity 項目:https://github.com/pavopax/vanity
原文連結:http://blog.thedataincubator.com/2017/04/ranked-15-python-packages-for-data-science/