我有一个 Dask DataFrame 构造如下:
import dask.dataframe as dd
df = dd.read_csv('matrix.txt', header=None)
type(df) //dask.dataframe.core.DataFrame
有没有办法将这个 DataFrame 保存为 pickle?
例如,
df.to_pickle('matrix.pkl')
最佳答案
通过快速检查 dask
中可用的方法,这是不可能的。仍然可以像另一个答案那样做,但我担心由于 dask 数据框的最终分布式特性,它可能并不简单。
无论如何,如果我是你,我会考虑另一种解决方案并使用 parquet 作为存储。它为您提供与 pickle 基本相同的优点,以及更多。
df.to_parquet('my_file.parquet')
虽然,如果您的计划是将 pickle 用作“暂停”方法以稍后恢复计算,那么保存到 parquet 并没有多大帮助。
到目前为止,我的建议是使用 Parquet 。看这个post比较了存储通用 pandas 数据帧的不同技术。你会看到他们甚至不讨论泡菜(它有一些问题,比如它可能在两个 python 版本之间不兼容)。这篇文章有点旧,现在 pandas/dask 可以直接使用 parquet 而无需显式使用 pyarrow
。
我猜你对阅读时间很感兴趣。文件大小和读取时间之间总是存在权衡。尽管在文章中显示,当您考虑多核操作时,您可以获得与压缩 parquet 文件(Parquet-snappy 列)类似的读取性能
因此,我会重复一遍。选择 parquet
文件,您将面向 future 。除非您的用例与面向柱状/数据框的用例有很大不同。
关于python - 将 Dask DataFrame 存储为 pickle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48518527/