Python 中的 Dask 簡介
由於資料呈指數級增長,擁有能夠管理大規模資料處理的工具變得越來越重要。Dask 是一個用於 Python 分析計算的多功能平行計算框架,就是這樣一種工具。本文將為您提供 Dask 的全面介紹以及有用的示例,幫助您入門。
什麼是 Dask?
Dask 是一個 Python 平行計算框架,它具有適應性,並且可以輕鬆建立使用者友好的工作流,用於攝取、過濾和分析大型資料集。它擅長處理不適合記憶體的大規模資料集,並與 NumPy、Pandas 和 Scikit-Learn 等知名 Python API 無縫整合。
Dask 入門
可以使用 Python 的包安裝程式 Pip 來安裝 Dask −
pip install dask
使用 Dask 進行大規模計算
現在讓我們看看如何將 Dask 用於大規模計算。
示例 1:使用 Dask Array
Dask Array 使用塊演算法實現了 NumPy ndarray 介面的一部分。以下是如何構建 Dask Array 並使用它執行計算 −
import dask.array as da x = da.random.random((10000, 10000), chunks=(1000, 1000)) y = x + x.T z = y[::2, 5000:].mean(axis=1) z.compute()
此示例中的計算使用 compute() 函式執行。Dask 將陣列分成塊,並分別處理每個塊,從而最大程度地利用可用的 RAM。
示例 2:使用 Dask DataFrame
Dask DataFrame 是一個大型並行 DataFrame,由沿著索引分隔的較小的 Pandas DataFrame 組成;下面是 Dask DataFrame 上的操作示例 −
import dask.dataframe as dd df = dd.demo.make_timeseries('2000', '2001', freq='1d', dtypes={'A': float, 'B': int}) result = df.groupby(df.index.month).mean() result.compute()
在此示例中,使用時間序列 DataFrame 為每個月計算了列的平均值。Dask DataFrame 操作是延遲評估的,並且像 Dask Array 一樣,使用 compute() 啟動計算。
示例 3:使用 Dask Delayed
Dask Delayed 是一種快速有效的並行化現有程式碼的方法。它允許使用者將函式評估延遲到併發作業中。這是一個示例 −
from dask import delayed @delayed def increment(x): return x + 1 @delayed def add(x, y): return x + y x = increment(15) y = increment(30) z = add(x, y) z.compute()
在此示例中,延遲裝飾器包裝了 add 和 increment 函式,使它們變為延遲的。使用 calculate() 啟動實際計算。
示例 4:使用 Dask Bag 處理非結構化資料
Dask Bag(也稱為 dask.bag 或 db)最適合在將資料轉換為 Dask 陣列或資料幀之前準備資料。文字資料、日誌檔案和 JSON 記錄等非結構化或半結構化資料由 Dask Bag 有效地處理。
import dask.bag as db data = db.from_sequence(['Alice', 'Bob', 'Charlie', 'Dennis', 'Edith', 'Frank'], npartitions=3) result = data.map(lambda x: (x, len(x))) result.compute()
示例 5:使用 Dask ML 進行可擴充套件的機器學習
Dask ML 在 Python 中提供了可擴充套件的機器學習,它利用 Dask 以及 Scikit-Learn 等流行的機器學習框架。
from dask_ml.cluster import KMeans import dask.array as da X = da.random.random((10000, 50), chunks=(1000, 50)) clf = KMeans(n_clusters=5) clf.fit(X)
在此示例中,我們使用 Dask Array 建立一個大型資料集,並使用來自 Dask ML 的 KMeans 聚類演算法。
結論
Dask 是一個用於大規模計算的頂級選擇,它是一個開源的 Python 庫。它旨在與 NumPy、Pandas 和 Scikit-Learn 等已安裝的 Python 庫平滑地協同工作。在大資料時代,它為多核處理和分散式計算提供了可擴充套件的解決方案。
在本介紹中,我們已經探討了 Dask 的許多功能,包括其安裝、資料結構以及在 Python 程式設計中的使用。給定的示例演示了 Dask 的功能,包括處理大型 Dask 陣列、並行化 Dask 資料幀上的操作、使用 Dask delayed 進行延遲評估、使用 Dask bag 處理非結構化資料以及使用 Dask ML 執行可擴充套件的機器學習。