八大工具,透析Python數據生態圈最新趨勢!
出處: 小象
我們前一陣子參加了在舊金山舉辦的Dato數據科學峰會。來自業界和學界的千余名數據科學研究人員在大會上對數據科學、機器學習和預測應用方面的最新發展進行了交流和探討。
以下是大會中討論的數據科學家在未來可能使用的八個Python工具。
峰會上的一個重磅消息是Dato將在BSD協議下開源SFrame和SGraph。SFrame(Scaleable Data Frame)是一個為大數據處理優化內存和性能的數據框(DataFrame)結構。SGraph是一個類似的概念,但代表的不是數據框而是圖。這兩個數 據結構的好處是即便數據量太大難以全部加載到內存中,數據科學家依然可以進行分析。
這一消息無論對Dato還是對Python社區來說都是一個分水嶺。它顯示了Dato對支持開源Python數據生態圈的誠意。在此之前有一種認 識就是Dato提供的免費版本只是將數據科學家捆綁在自家的平臺最終還是得收費,因為Dato確實有自己的商業產品。但從這次開源我們看到Dato并不打 算耍這種小把戲。我們也希望其他開發者(沒錯,Pandas說的就是你)能夠拋開收費的顧慮來使用SFrame和SGraph以便打破內存的限制。
Bokeh是一個不需服務器就可以在瀏覽器中實現互動可視化的Python庫。它可以處理非常大的數據集而且速度很快也能嵌入在網頁當中。想要快速方便地創建互動圖表和數據應用的話這個庫非常有用。
Bokeh對處理大型數據集時的性能問題著墨頗多。還有另外一點就是開發這些互動圖表只需要Python一種語言即可。
Dask是一款主要針對單機的Python調度工具。它能幫助你將數據分成塊并負責并行處理的調度工作。Dask是用純Python寫成的,它自己也使用了一些開源的Python庫。
Dask有兩種用法:普通用戶主要使用Dask提供的集合類型,用法就和NumPy跟Pandas的差不多,但Dask內部會生成任務圖。Dask開發人員則可以直接與Dask任務圖打交道因為Dask任務圖并不依賴于它提供的集合類型。
現在Python生態圈中有很多庫看起來功能都差不多比如說Blaze、Dask和Numba,但其實應該用在數據處理的不同層面上,做一個類比的話Blaze就相當于數據庫中的查詢優化器,而Dask則相當于執行查詢的引擎。
看數據精華,關注數盟微信
如果你是一名數據科學家的話你可能每天都會用到Python。Python是非常不錯,但也不是完全沒有問題。它最大的問題是處理大型數據集的時候會有點力不從心。這時候你可能會采用采樣的方法來解決數據集的規模問題,但僅僅采樣肯定會多多少少影響到你的研究結果。
Ibis是Cloudera Labs推出的一個新項目,目前還是預覽版。它試圖解決的就是數據集規模的問題,但對用戶提供的確是單機上Python的體驗,而且能夠與現有的 Python數據生態圈(Pandas、Scikit-learn、Numpy)進行集成。未來它還計劃加入與機器學習和高級分析集成的功能。
抓取網頁數據的時候通常會碰到大量的JavaScript,而網頁抓取工具又不能很好地執行JavaScript,所以最后很可能只拿到了原始的 Html數據。Splash是由網頁數據抓取的鼻祖ScrapingHub所推出的JavaScript渲染服務。它由Python寫成,使用了 Twisted和Qt。你可以把它當成是一個輕量級的瀏覽器,但它可以并行處理多個網頁并執行JavaScript,它也可以關閉圖片以便提高渲染速度。
Petuum是專為解決大規模機器學習問題而開發的一款分布式機器學習框架。它提供了解決大規模機器學習中數據集太大和參數太大問題的分布式編程工具,而且可以利用數據的各種統計學特性來進行性能優化。
Petuum提供了兩個主要的平臺:B?sen,一個為數據并行機器學習算法設計的鍵值倉庫;Strads,一個為模型并行機器學習算法而設計的調度工具。數據并行和模型并行在現代機器學習算法中都有出現,所以Petuum就針對這兩種方法提供了兩種平臺。
Flink是一個開源的批處理和流處理數據平臺。Flink的核心是一個提供了數據分發、通信和容錯功能的流數據處理引擎。它設計的主要目標之一是替代Hadoop的MapReduce功能,這就造成它和Aphache Spark非常相像。
雖然API很像,但兩者處理數據的方式有著很大差別。Spark處理數據流時其實進行的是批處理,所以其實只是流處理的一個近似。平常是沒有問題的,但如果對延遲的要求高的話Spark就會比較慢或者出錯。Flink則是一個可以進行批處理的流處理框架。
在網頁上顯示一個數據展板是與人分享數據科學發現的最直觀方法。對R語言來說有Shiny來簡化數據科學家開發網頁的工作,而Pyxley就相當 于Python版的Shiny。使用Pyxley不光不用寫HTML、CSS,你還可以加入自己的JavaScript來進行定制。