使用HDF5格式

HDF5 是⼀种存储⼤规模科学数组数据的⾮常好的⽂件格式。它
可以被作为 C 库,带有许多语⾔的接⼝,如 Java Python
MATLAB 等。 HDF5 中的 HDF 指的是层次型数据格式
hierarchical data format )。每个 HDF5 ⽂件都含有⼀个⽂件系
统式的节点结构,它使你能够存储多个数据集并⽀持元数据。与
其他简单格式相⽐, HDF5 ⽀持多种压缩器的即时压缩,还能更
⾼效地存储重复模式数据。对于那些⾮常⼤的⽆法直接放⼊内存
的数据集, HDF5 就是不错的选择,因为它可以⾼效地分块读
写。
虽然可以⽤ PyTables h5py 库直接访问 HDF5 ⽂件, pandas 提供
了更为⾼级的接⼝,可以简化存储 Series DataFrame 对象。
HDFStore 类可以像字典⼀样,处理低级的细节:
In [92]: frame = pd.DataFrame({'a': np.random.randn(100)})
In [93]: store = pd.HDFStore('mydata.h5')
In [94]: store['obj1'] = frame
In [95]: store['obj1_col'] = frame['a']
In [96]: store
Out[96]:
<class 'pandas.io.pytables.HDFStore'>
File path: mydata.h5
/obj1 frame (shape->[100,1])
/obj1_col series (shape->[100])
/obj2 frame_table (typ->appendable,nrows->100,ncols->1,indexers->
248 [index])
/obj3 frame_table (typ->appendable,nrows->100,ncols->1,indexers->
[index])
HDF5 ⽂件中的对象可以通过与字典⼀样的 API 进⾏获取:
mport numpy as np
frame=pd.DataFrame({'a': np.random.randn(100)})
# print(frame)
store = pd.HDFStore('mydate.h5')
store['obj1']=frame
store['obj1_col'] = frame['a']
print(store)
print(store['obj1'])
print(store['obj1_col'])

HDFStore支持俩种存储模式,‘fixed’和‘table’,后者速度更慢,但支持一种特殊语法的查询操作

store.put('obj2',frame,format='table')

store.select('obj2',where=['index >= 10 and index<=15']

frame.to_hdf('mydata.h5', 'obj3', format='table')
pd.read_hdf('mydata.h5', 'obj3', where=['index <5'])
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值