如何将Dask.DataFrame转换为pd.DataFrame?
How to transform Dask.DataFrame to pd.DataFrame?
如何将结果 dask.DataFrame 转换为 pandas.DataFrame(假设我已经完成了繁重的工作,只想将 sklearn 应用于我的汇总结果)?
您可以调用 .compute() 方法将 dask.dataframe 转换为 pandas 数据帧:
df = df.compute()
pd_df = pd.DataFrame(dsk_df)
给你。它比 dsk_df.compute()
.
快
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.
如何将结果 dask.DataFrame 转换为 pandas.DataFrame(假设我已经完成了繁重的工作,只想将 sklearn 应用于我的汇总结果)?
您可以调用 .compute() 方法将 dask.dataframe 转换为 pandas 数据帧:
df = df.compute()
pd_df = pd.DataFrame(dsk_df)
给你。它比 dsk_df.compute()
.
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.