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 执行可扩展的机器学习。