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 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告