huyutian

他强由他强,清风拂山岗;他横由他横,明月照大江。他自狠来他自恶,我自一口真气足

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  20 随笔 :: 47 文章 :: 22 评论 :: 0 Trackbacks
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"'])
posted on 2015-12-08 16:38 胡雨田 阅读(11883) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理