Dask简直是我遇到过的最具革命性的数据处理工具。如果您喜欢 Pandas 和 Numpy,但有时会为无法放入 RAM 的数据苦苦挣扎,那么 Dask 绝对是您所需要的。Dask 支持 Pandas 数据框和 Numpy 数组数据结构,可以在本地计算机上运行,也可以扩展到集群上运行。本质上,您只需编写一次代码,然后选择在本地运行它或使用普通的 Pythonic 语法将其部署到多节点集群。这本身就是一个很棒的功能,但这并不是我写这篇博文并说每个数据科学家(至少是使用 Python 的人)都应该使用 Dask 的原因。对我来说,神奇的 Dask 功能是通过最少的代码更改,我可以利用笔记本电脑上已有的处理能力并行运行代码。并行处理数据,意味着更少的执行时间、更少的等待时间和更多的分析时间!这篇博文将讨论 dask.delayed 以及它如何融入数据科学工作流程。
熟悉Dask
作为对 Dask 的介绍,我将从几个例子开始,只是为了让您了解它完全不引人注目和自然的语法。这里的主要收获是您可以使用您已经知道的知识,而无需学习新的大数据工具,如 Hadoop 或 Spark。
Dask 引入了 3 个能够存储比 RAM 更大的数据的并行集合,即 Dataframes、Bags 和 Arrays。这些集合类型中的每一种都能够使用在 RAM 和硬盘之间分区的数据,以及分布在集群中多个节点上的数据。
Dask DataFrame 由较小的拆分 Pandas 数据帧组成,因此允许 Pandas 查询语法的子集。下面是加载 2018 年所有 csv 文件、解析时间戳字段然后运行 Pandas 查询的示例代码:
import dask.dataframe as dd
df = dd.read_csv('logs/2018-*.*.csv