Dask DataFrame
目录
Dask DataFrame¶
Dask DataFrame 通过并行化 pandas 来帮助您处理大型表格数据,既可以在笔记本电脑上进行超内存计算,也可以在计算机分布式集群上进行。
就像 pandas:Dask DataFrames 是许多 pandas DataFrames 的集合。
API 是相同的。执行方式也是相同的。
大规模:可在笔记本电脑上处理 100 GiB,或在集群上处理 100 TiB 的数据。
易于使用:纯 Python,易于设置和调试。
Dask DataFrames 协调了许多沿索引排列的 pandas DataFrames/Series。Dask DataFrame 按行进行分区,通过索引值对行进行分组以提高效率。这些 pandas 对象可能存储在磁盘上或其他的机器上。
从 pandas 到 Dask¶
Dask DataFrame 复制了 pandas 的功能,因此对于大多数用户来说应该很熟悉。
Pandas 和 Dask 的 API 是相同的,因此从一个切换到另一个非常简单。
>>> import pandas as pd
>>> df = pd.read_parquet('s3://mybucket/myfile.parquet')
>>> df.head()
0 1 a
1 2 b
2 3 c
>>> import dask.dataframe as dd
>>> df = dd.read_parquet('s3://mybucket/myfile.*.parquet')
>>> df.head()
0 1 a
1 2 b
2 3 c
Dask 并行执行 pandas 操作。Dask 是惰性的;当您想要一个内存中的结果时,需要添加 .compute()
。
>>> import pandas as pd
>>> df = df[df.value >= 0]
>>> joined = df.merge(other, on="account")
>>> result = joined.groupby("account").value.mean()
>>> result
alice 123
bob 456
>>> import dask.dataframe as dd
>>> df = df[df.value >= 0]
>>> joined = df.merge(other, on="account")
>>> result = joined.groupby("account").value.mean()
>>> result.compute()
alice 123
bob 456
机器学习库通常有接受 Dask DataFrame 并并行运行的 Dask 子模块。
>>> import pandas as pd
>>> import xgboost
>>> from sklearn.cross_validation import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(
... X, y, test_size=0.2,
)
>>> dtrain = xgboost.DMatrix(X_train, label=y_train)
>>> xgboost.train(params, dtrain, 100)
<xgboost.Booster ...>
>>> import dask.dataframe as dd
>>> import xgboost.dask
>>> from dask_ml.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(
... X, y, test_size=0.2,
)
>>> dtrain = xgboost.dask.DaskDMatrix(client, X, y)
>>> xgboost.dask.train(params, dtrain, 100)
<xgboost.Booster ...>
与所有 Dask 集合一样,您可以通过调用 .compute()
方法来触发计算,或使用 .persist()
方法将数据持久化到分布式内存中。
何时不使用 Dask DataFrame¶
Dask DataFrame 通常在以下情况使用…
您的数据太大
您的计算太慢,并且其他技术无效
如果出现以下情况,您应该只使用 pandas…
您的数据量小
您的计算速度快(亚秒级)
有更简单的方法来加速您的计算,例如避免使用
.apply
或 Python for 循环,而是使用内置的 pandas 方法。
示例¶
Dask DataFrame 广泛应用于各种场景中 — 任何需要处理大型表格数据集的地方。以下是一些大规模示例:
这些示例都在使用 Coiled 部署的 Dask 集群上处理超内存数据集,但管理和部署 Dask 有许多其他选项。有关部署选项的更多信息,请参阅我们的 部署 Dask 集群 文档。
您还可以访问 https://examples.dask.org.cn/dataframe.html 查看更多示例集合。