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 執行可擴充套件的機器學習。

更新於: 2023-07-17

319 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告