如何将 Dask.DataFrame 转换为 pd.DataFrame?

新手上路,请多包涵

如何将生成的 dask.DataFrame 转换为 pandas.DataFrame(假设我完成了繁重的工作,只想将 sklearn 应用于我的聚合结果)?

原文由 Philipp_Kats 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

您可以调用 .compute() 方法将 dask.dataframe 转换为 pandas 数据帧:

 df = df.compute()

原文由 MRocklin 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题