hdf5 和 pickle 比原始 csv 文件占用更多空间

Posted

技术标签:

【中文标题】hdf5 和 pickle 比原始 csv 文件占用更多空间【英文标题】:Hdf5 and pickle takes more space than raw csv file 【发布时间】:2016-10-29 14:01:16 【问题描述】:

我有一个大小为 18 MB 的 csv 文件(仅包含数字数据)。当我读取它并转换为 numpy 数组并将其保存为 hdf5 格式或 pickle 时,大约需要 48 MB 磁盘空间。我们使用pickle或hdf5时不应该压缩数据吗?以 hdf5 格式保存以供 tensorflow 使用会更好吗? CSV 数据的格式为

2,3,66,184,2037,43312,0,0,9,2,0,1,8745,1,0,2,6,204,27,97
2,3,66,184,2037,43312,0,0,9,2,0,1,8745,1,0,2,6,204,27,78
2,3,66,184,2037,43312,0,0,9,2,0,1,8745,1,0,1,6,204,27,58

数据维度为 310584 X 20

【问题讨论】:

那么 HDF5 和 pickle 都需要大约 48MB 的磁盘空间?数据集的维度和类型是什么?另外,如果您可以发布几行可能有帮助的 csv。 尺寸为 310584 X 20 【参考方案1】:

整数的 Numpy 数组默认为 int64 dtype 。这就是数据比原始数据占用更多空间的原因。

310584 X 20 x 8 ~= 48 MB (8 Bytes is the size for int64)

【讨论】:

以上是关于hdf5 和 pickle 比原始 csv 文件占用更多空间的主要内容,如果未能解决你的问题,请参考以下文章

Caffe:将 CSV 文件转换为 HDF5

从多个熊猫数据帧创建 HDF5

使用熊猫将 CSV 文件转换为 HDF5

Pandas只提供了读取啥文件的函数?

将数百个 csv 文件转换为 hdf5 文件

将大 csv 转换为 hdf5