python - 将 Dask DataFrame 存储为 pickle

标签 python pandas dataframe dask

我有一个 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 列)类似的读取性能

enter image description here

因此,我会重复一遍。选择 parquet 文件,您将面向 future 。除非您的用例与面向柱状/数据框的用例有很大不同。

关于python - 将 Dask DataFrame 存储为 pickle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48518527/

相关文章:

python - 在 python 中过滤具有特定列名的 Pandas 数据框

python - 有没有更好的方法在字典理解中使用多个 OR ?

python - 逐列突出显示 Pandas 中每一行的差异

python - 将 pandas : if, 放在一行中,某列中的单词不会出现在其他列的字符串中,删除行

Python在groupby中使用三元运算符

python - 与 pandas 系列切片的混淆

python - 如何使用 Pandas 转移数据框中的值?

python - Django 注解对另一个注解有副作用

Python - 将 2D 坐标对列表转换为 2 个 X 和 Y 分量列表

python - 如何更改Python数组的编码?