gpt4 book ai didi

python - 使用 HDFStore 压缩数据

转载 作者:行者123 更新时间:2023-11-28 17:43:10 25 4
gpt4 key购买 nike

我是 pytables 的新手,对存储压缩的 pandas DataFrame 有疑问。我当前的代码是:

import pandas
# HDF5 file name
H5name="C:\\MyDir\\MyHDF.h5"

# create HDF5 file
store=pandas.io.pytables.HDFStore(H5name)

# write a pandas DataFrame to the HDF5 file created
myDF.to_hdf(H5name,"myDFname",append=True)

# read the pandas DataFrame back from the HDF5 file created
myDF1=pandas.io.pytables.read_hdf(H5name,"myDFname")

# close the file
store.close()

当我检查创建的 HDF5 的大小时,大小 (212kb) 比我用来创建 pandas DataFrame 的原始 csv 文件 (58kb) 大得多。

所以,我尝试通过(删除 HDF5 文件)并重新创建压缩

# create HDF5 file
store=pandas.io.pytables.HDFStore(H5name,complevel=1)

并且创建的文件大小没有改变。我尝试了从 1 到 9 的所有 complevels,但大小仍然保持不变。

我尝试添加

# create HDF5 file
store=pandas.io.pytables.HDFStore(H5name,complevel=1,complib="zlib")

但压缩没有变化。

可能是什么问题?

此外,理想情况下,我想使用类似于 R 为其保存功能所做的压缩(例如,在我的情况下,58kb 的文件在 RData 中保存为 27kb 的大小)?我是否需要在 Python 中进行任何额外的序列化以减小大小?

编辑:

我正在使用 Python 3.3.3 和 Pandas 0.13.1

编辑:我尝试使用更大的 487MB csv 文件,其 RData size(通过 R 的保存功能)为 169MB。对于较大的文件,我确实看到了压缩。 Bzip2 提供了 202MB 的最佳压缩(级别 = 9)并且是最慢的读/写。 Blosc 压缩(level=9)给出了 276MB 的最大大小,但写/读速度要快得多。

不确定 R 在它的 save 函数中有什么不同,但它与这些压缩算法中的任何一个一样快并且压缩得更多。

最佳答案

你这里有一个非常小的文件。 HDF5 基本上将您的数据分块;通常 64KB 是最小块大小。取决于数据是什么,它甚至可能不会以该大小进行压缩。

您可以尝试使用 msgpack 为这种大小的数据提供一个简单的解决方案。 HDF5 对于较大的尺寸非常有效,并且压缩效果非常好。

关于python - 使用 HDFStore 压缩数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21838181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com