[英]creating dask dataframe by reading a pickle file in dask module of Python
[英]Store a Dask DataFrame as a pickle
我有一个 Dask DataFrame 构造如下:
import dask.dataframe as dd
df = dd.read_csv('matrix.txt', header=None)
type(df) //dask.dataframe.core.DataFrame
有没有办法将此 DataFrame 保存为泡菜?
例如,
df.to_pickle('matrix.pkl')
从快速检查dask
中可用的方法dask
,这是不可能的。 仍然可以按照另一个答案来做,但我担心由于 dask 数据帧的最终分布式特性,它可能并不简单。
无论如何,如果我是你,我会采用另一种解决方案并使用镶木地板作为存储空间。 它为您提供了泡菜的基本相同的优点,等等。
df.to_parquet('my_file.parquet')
虽然,如果您的计划是使用 pickle 作为稍后恢复计算的“暂停”方法,则保存到 parquet 并没有真正的帮助。
我的建议是到目前为止使用镶木地板。 看看这篇文章,其中比较了存储通用 Pandas 数据帧的不同技术。 你会看到他们甚至不讨论泡菜(它有一些问题,比如它可能在两个 python 版本之间不兼容)。 文章有点老了,现在pandas/dask可以直接使用parquet,不需要显式使用pyarrow
。
我猜你对阅读时间很感兴趣。 在文件大小和读取时间之间总是需要权衡。 虽然在文章中表明,当您考虑多核操作时,您可以获得与压缩 parquet 文件相似的读取性能(Parquet-snappy 列)
因此,我将重复自己。 选择parquet
文件,您将面向未来。 除非您的用例与面向柱状/数据框的用例非常不同。
您可以像处理任何其他对象一样尝试对其进行酸洗 - 导入泡菜
with open('filename.pickle', 'wb') as handle:
pickle.dump(df, handle, protocol=pickle.HIGHEST_PROTOCOL)
with open('filename.pickle', 'rb') as handle:
b = pickle.load(handle)
print(a == b)
此外,请检查这对酸洗DASK dataframes的安全和在什么情况下,在有可能打破
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.