HDF5能够实现高效读写磁盘上二进制格式存储的科学数据,它是一个C库,带有许多语言的接口,如Java、Python和Matlab等。
HDF5中的HDF是指层次型数据格式(hierarchical data format)。
每个HDF5文件都含有一个文件系统式的节点结构,能够存储多个数据集并支持元数据。
与其他简单格式相比,HDF5支持多种压缩器的即时压缩,而且能更高效的存储重复模式数据。
对于那些非常大无法直接放入内存的数据集,HDF5是不错的选择,因此它支持高效的分块读写。
Python的HDF5库有两个接口(PyTables和h5py)。其中,h5py提供直接高效的HDF5 API访问接口,PyTables则抽象HDF5的许多细节进而提供多种灵活的数据容器、表索引、查询功能以及对核外计算技术的某些支持。
pandas有一个最小化的类似于字典的HDFStore类,通过PyTables存储pandas对象
store = pd.HDFStore('mydata.h5')
store['obj1'] = frame
store['obj1_col'] = frame['a']
store
<class 'pandas.io.pytables.HDFStore'>
File path: mydata.h5
/obj1 frame (shape->[3,5])
/obj1_col series (shape->[3])
HDF5文件中的对象可以通过与字典一样的方式进行获取
store['obj1']
由于很多数据分析问题都是IO密集型(不是CPU密集型),利用HDF5可以显著提升应用程序效率。
HDF5并不是数据库,它适合“一次写多次读‘