【问题标题】:appending rows with pandas' to_hdf multiples H5 file size?用熊猫的 to_hdf 倍数 H5 文件大小附加行?
【发布时间】:2015-05-11 15:17:50
【问题描述】:

我有一个 HDF5,大约有 13,000 行 × 5 列,这些行随着时间的推移被附加到带有 DF.to_hdf(Filename, 'df', append=True, format='table') 的同一个文件中,大小如下:

-rw-r--r--  1 omnom  omnom   807M Mar 10 15:55 Final_all_result.h5

最近我收到了ValueError,因为我试图附加到其中一列的数据比声明的列大小(2000 年,min_itemsize)长。

所以我将所有行加载到内存中,然后将它们转储到一个新的HDF 文件中一次性:

DF.to_hdf(newFilename, \
                'df', \
                mode='a', \
                data_columns=['Code', 'ID', 'Category', 'Title', 'Content'], \
                format='table', \
                min_itemsize={'index': 24, \
                                'Code': 8, \
                                'ID': 32, \
                                'Category': 24, \
                                'Title': 192, \
                                'Content':5000 \
                                } \
                )

我真的很惊讶新文件的大小大约是原始文件的 1/10:

-rw-r--r--  1 omnom  omnom    70M Mar 10 16:01 Final_all_result_5000.h5

我仔细检查了两个文件中的行数,它们是相等的。

我是否以错误的方式追加新行,导致每次追加操作时文件大小都成倍增加?谷歌搜索并在这里搜索,但认为之前没有讨论过这个问题,或者我搜索的关键字可能有误。

感谢任何帮助。

更新: 我尝试根据此线程中的建议为附加行中的所有数据列添加min_itemsize:pandas pytables append: performance and increase in file size:

DF.to_hdf(h5AbsPath, \
                'df', \
                mode='a', \
                data_columns=['Code', 'ID', 'Category', 'Title', 'Content'], \
                min_itemsize={'index': 24, \
                                'Code': 8, \
                                'ID': 32, \
                                'Category': 24, \
                                'Title': 192, \
                                'Content':5000 \
                                }, \
                 append=True \
                 )

但它仍然不会减小文件大小。

感谢有关添加压缩的建议,附加和新转储的文件均未按要求压缩。

【问题讨论】:

  • 你用Pytables检查过压缩吗?默认为无压缩:link

标签: python python-2.7 pandas append hdf5


【解决方案1】:

我曾经从 pandas DataFrame 中保存 .h5 文件。尝试将complib='blosc' 和complevel=9 添加到to_hdf() 函数。这应该会减小文件大小。

【讨论】:

    猜你喜欢
    • 2017-05-28
    • 2019-01-23
    • 1970-01-01
    • 2018-07-15
    • 2021-05-08
    • 1970-01-01
    • 2013-07-30
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多