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 執行可擴充套件的機器學習。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP