Ame*_*ina 23 python io hdf5 pytables 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'])
......:
Run Code Online (Sandbox Code Playgroud)
In [1147]: store['s'] = s
In [1148]: store['df'] = df
In [1149]: store['wp'] = wp
Run Code Online (Sandbox Code Playgroud)
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])
Run Code Online (Sandbox Code Playgroud)
In [1151]: store.close()
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,什么时候数据实际写入磁盘?
假设我想将生活在.csv文件中的数千个大型数据帧添加到单个.h5文件中.我需要加载它们并将它们.h5逐个添加到文件中,因为我无法将它们全部放在内存中,因为它们会占用太多内存.这可能与HDF5有关吗?这样做的正确方法是什么?
Pandas文档说明如下:
"这些商店一旦写完就不能追加(虽然你只是删除它们并重写).它们也不可查询 ;它们必须全部检索."
不可附加也不可查询是什么意思?还有,它不应该说一旦关闭而不是书面?
Jef*_*eff 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)
Run Code Online (Sandbox Code Playgroud)
将是一种方式(为每个文件创建一个单独的节点)
不可附加 - 一旦你编写它,你只能一次检索它,例如你不能选择一个子部分
如果你有一张桌子,那么你可以做以下事情:
pd.read_hdf('my_store.h5','a_table_node',['index>100'])
Run Code Online (Sandbox Code Playgroud)
这就像数据库查询一样,只获取部分数据
因此,商店不是可附加的,也不是可查询的,而表是两者.
| 归档时间: |
|
| 查看次数: |
15546 次 |
| 最近记录: |