Pandas提供了以下示例,展示如何将Series
、DataFrames
和Panels
存储到HDF5文件中:
准备一些数据:
In [1142]: store = HDFStore('store.h5')
In [1143]: index = date_range('1/1/2000', periods=8)
In [1144]: s = Series(randn(5), index=['a', 'b', 'c', 'd', 'e'])
In [1145]: df = DataFrame(randn(8, 3), index=index,
......: columns=['A', 'B', 'C'])
......:
In [1146]: wp = Panel(randn(2, 5, 4), items=['Item1', 'Item2'],
......: major_axis=date_range('1/1/2000', periods=5),
......: minor_axis=['A', 'B', 'C', 'D'])
......:
将其保存在商店中:
In [1147]: store['s'] = s
In [1148]: store['df'] = df
In [1149]: store['wp'] = wp
检查商店里有什么:
In [1150]: store
Out[1150]:
<class 'pandas.io.pytables.HDFStore'>
File path: store.h5
/df frame (shape->[8,3])
/s series (shape->[5])
/wp wide (shape->[2,5,4])
关闭店铺:
In [1151]: store.close()
问题:
在上面的代码中,什么时候数据实际写入磁盘?
假设我想将成千上万个存储在
.csv
文件中的大型数据集添加到单个.h5
文件中。由于它们会占用太多内存,我需要逐个加载并将它们添加到.h5
文件中,这是唯一可行的方式,但我不能一次性将它们全部存储在内存中。使用HDF5是否可以实现这一点?应该如何正确地操作?Pandas文档中说:
"这些存储一旦写入就无法追加(虽然您可以简单地删除它们并重新编写)。它们也不可查询;必须检索其全部内容。"
什么意思无法追加或查询?另外,它不应该说一旦关闭而不是写入吗?
f
传递给df.to_hdf
?此外,df.to_hdf
和store['df'] = df
之间有什么区别吗?最后,我对节点如何与上面的代码相关联感到困惑。store['df'] = df
是否一定会在文件中创建一个新节点?是否有办法将多个DataFrame添加到单个hdf5文件中的单个节点中? - Amelio Vazquez-ReinaHDFStore()
、追加表格和使用read/write_hdf
需要导入哪些包/模块? - Amelio Vazquez-Reina