如何将生成的 dask.DataFrame 转换为 pandas.DataFrame(假设我完成了繁重的工作,只想将 sklearn 应用于我的聚合结果)?
原文由 Philipp_Kats 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何将生成的 dask.DataFrame 转换为 pandas.DataFrame(假设我完成了繁重的工作,只想将 sklearn 应用于我的聚合结果)?
原文由 Philipp_Kats 发布,翻译遵循 CC BY-SA 4.0 许可协议
MRocklin 的答案是正确的,这个答案提供了更多详细信息,说明何时适合从 Dask DataFrame 转换为 Pandas DataFrame(以及如何预测它何时会导致问题)。
Dask DataFrame 中的每个分区都是一个 Pandas DataFrame。运行 df.compute()
会将 Dask DataFrame 中的所有底层分区合并为一个 Pandas DataFrame。如果 Pandas DataFrame 的大小大于您机器上的 RAM,就会出现问题。
如果 df
有 30 GB 的数据,而您的计算机有 16 GB 的 RAM,那么 df.compute()
将因内存错误而崩溃。如果 df
只有 1 GB 的数据,那么你会没事的。
您可以运行 df.memory_usage(deep=True).sum()
来计算您的 DataFrame 使用的内存量。这会让您知道您的 DataFrame 是否足够小,可以合并到单个 Pandas DataFrame 中。
重新分区会改变 Dask DataFrame 中底层分区的数量。 df.repartition(1).partitions[0]
在概念上类似于 df.compute()
。
在执行大过滤操作后,转换为 Pandas DataFrame 尤其可行。如果您将 1000 亿行的数据集过滤到 1 万行,那么您可能只需切换到 Pandas API。
原文由 Powers 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
您可以调用 .compute() 方法将 dask.dataframe 转换为 pandas 数据帧: