什麼是Python中的Dask,它如何幫助你進行數據分析?
前言
Python由於其易用性而成爲最流行的語言,它提供了許多庫,使程序員能夠開發更強大的軟件,以並行運行模型和數據轉換。
有這麼一個庫,它提供了並行計算、加速了算法,甚至允許您將NumPy和pandas與XGBoost庫集成在一起。讓我們認識一下吧。
什麼是Dask
Dask是一個開源項目,它允許開發者與scikit-learn、pandas和NumPy合作開發他們的軟件。它是一個非常通用的工具,可以處理各種工作負載。
這個工具包括兩個重要的部分;動態任務調度和大數據收集。前面的部分與Luigi、芹菜和氣流非常相似,但它是專門爲交互式計算工作負載優化的。
後一部分包括數據幀、並行數組和擴展到流行接口(如pandas和NumPy)的列表。
事實上,Dask的創建者Matthew Rocklin先生確認Dask最初是爲了並行化Pandas和NumPy而創建的,儘管它現在提供了比一般的並行系統更多的好處。
Dask的數據幀非常適合用於縮放pandas工作流和啓用時間序列的應用程序。此外,Dask陣列還爲生物醫學應用和機器學習算法提供多維數據分析。
可擴展性
Dask如此受歡迎的原因是它使Python中的分析具有可擴展性。
這個工具的神奇之處在於它只需要最少的代碼更改。該工具在具有1000多個核的彈性集羣上運行!此外,您可以在處理數據的同時並行運行此代碼,這將簡化爲更少的執行時間和等待時間!
該工具完全能夠將複雜的計算計算調度、構建甚至優化爲圖形。這就是爲什麼運行在10tb上的公司可以選擇這個工具作爲首選的原因。
Dask還允許您爲數據數組構建管道,稍後可以將其傳輸到相關的計算資源。總之,這個工具不僅僅是一個並行版本的pandas。
如何工作
現在我們已經理解了Dask的基本概念,讓我們看一個示例代碼來進一步理解:
import dask.array as da f = h5py.File('myfile.hdf5') x = da.from_array(f['/big-data'], chunks=(1000, 1000))
對於那些熟悉數據幀和數組的人來說,這幾乎就是你放置數據的地方。
在本例中,您已經將數據放入了Dask版本中,您可以利用Dask提供的分發特性來運行與使用pandas類似的功能。
爲何如此流行
作爲一個由PyData生成的現代框架,Dask由於其並行處理能力而備受關注。
在處理大量數據——尤其是比RAM大的數據塊——以便獲得有用的見解時,這是非常棒的。公司受益於Dask提供的強大分析,因爲它在單機上進行高效的並行計算。
這就是爲什麼Gitential、Oxlabs、DataSwot和Red Hat等跨國公司已經在他們的日常工作系統中使用Dask的主要原因。總的來說,Dask之所以超級受歡迎是因爲:
- 集成:Dask提供了與許多流行工具的集成,其中包括PySpark、pandas、OpenRefine和NumPy。
- 動態任務調度:它提供了動態任務調度並支持許多工作負載。
- 熟悉的API:這個工具不僅允許開發人員通過最小的代碼重寫來擴展工作流,而且還可以很好地與這些工具甚至它們的API集成。
- 向外擴展集羣:Dask計算出如何分解大型計算並有效地將它們路由到分佈式硬件上。
- 安全性:Dask支持加密,通過使用TLS/SSL認證進行身份驗證。
優缺點
讓我們權衡一下這方面的利弊。
使用Dask的優點:
- 它使用pandas提供並行計算。
- Dask提供了與pandas API類似的語法,所以它不那麼難熟悉。
使用Dask的缺點:
- 在Dask的情況下,與Spark不同,如果您希望在創建集羣之前嘗試該工具,您將無法找到獨立模式。
- 它在Scala和R相比可擴展性不強。
【責任編輯:趙寧寧 TEL:(010)68476606】