pandas使用HDF5格式存储需要注意的问题

pandas使用HDF5格式存储需要注意的问题
HDF5格式非常适合保存层次化的结构数据集合。python下有pytable和h5py两种接口方式支持存储HDF5文件,pandas就支持直接读写pytable。保存数据量不太大(一般控制在2GB以内)的日线分钟线数据用h5格式还是很方便的。pandas在读取h5文件时,可以像数据库一样进行条件检索。详细资料可参考pandas.HDFStore的where参数。要使column可以在where语句中查询,保存数据文件时需要增加index或者明确指定data_columns。但是指定过多的column为data_columns将会使得 性能下降。
网上搜索后找到了关于pandas存储HDF5文件性能优化的一些建议,原文在 这里

1.不使用index,创建出来的HDF文件尺寸会小一些,速度也快一些。
2.通过store.create_table_index() 创建索引,对data_columns进行筛选时的速度没有什么影响。
3.保存HDF时使用压缩选项对数据的读取速度影响很小,但是压缩后,文件尺寸会显著的变小。
使用pandas读写hdf5文件示例如下
# write
store=pd.HDFStore( " ./data/Minutes.h5 ", " a ", complevel=9, complib= ' zlib ')
store.put( " Year2015 ", dfMinutes, format= " table ", append=True, data_columns=[ ' dt ', ' code '])
#  read
store=pd.HDFStore( " ./data/Minutes.h5 ", " r ")
store.select( " Year2015 ", where=[ ' dt<Timestamp("2015-01-07") ', ' code=="000570" '])

你可能感兴趣的:(pandas使用HDF5格式存储需要注意的问题)