Pandas有关于如何在HDF5文件中存储Series
,DataFrames
和Panels
的示例:
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文档说明如下:
“这些商店不会附加一旦写入(尽管你只是 删除它们并重写)。他们也不是可查询的;他们一定是 完整地检索。“
不可附加还是可查询是什么意思?此外,它不应该说关闭而不是写?
答案 0 :(得分:15)
一旦声明被提出,例如store['df'] = df
。 close
只关闭实际文件(如果进程存在,将会关闭,但会打印一条警告消息)
阅读http://pandas.pydata.org/pandas-docs/dev/io.html#storing-in-table-format
部分在.h5
文件中放置大量节点通常不是一个好主意。您可能希望追加并创建较少数量的节点。
您可以逐个遍历.csv
和store/append
。类似的东西:
for f in files:
df = pd.read_csv(f)
df.to_hdf('file.h5',f,df)
将是一种方式(为每个文件创建单独的节点)
不可追加 - 一旦你写完,你只能一次全部检索,例如你不能选择一个小节
如果您有桌子,那么您可以执行以下操作:
pd.read_hdf('my_store.h5','a_table_node',['index>100'])
就像数据库查询一样,只获取部分数据
因此,商店不可附加,也不可查询,而表格。