gpt4 book ai didi

python - 在 Pandas 中迭代写入 HDF5 存储

转载 作者:IT老高 更新时间:2023-10-28 20:29:04 25 4
gpt4 key购买 nike

Pandas有以下示例说明如何在 HDF5 文件中存储 SeriesDataFramesPanels:

准备一些数据:

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()

问题:

  1. 在上面的代码中,数据是什么时候真正写入磁盘的

  2. 假设我想将位于 .csv 文件中的数千个大型数据帧添加到单个 .h5 文件中。我需要加载它们并将它们一一添加到 .h5 文件中,因为我无法将它们一次全部存储在内存中,因为它们会占用太多内存. HDF5可以做到这一点吗?正确的做法是什么?

  3. Pandas 文档说明如下:

    "These stores are not appendable once written (though you simply remove them and rewrite). Nor are they queryable; they must be retrieved in their entirety."

    不可追加也不可查询是什么意思?另外,不应该说一次close而不是written吗?

最佳答案

  1. 语句一执行,例如store['df'] = dfclose 只是关闭实际文件(如果进程存在,它将为您关闭,但会打印一条警告消息)

  2. 阅读 http://pandas.pydata.org/pandas-docs/dev/io.html#storing-in-table-format 部分

    .h5 文件中放置大量节点通常不是一个好主意。您可能希望追加并创建较少数量的节点。

    您可以逐一遍历您的 .csvstore/append 它们。比如:

    for f in files:
    df = pd.read_csv(f)
    df.to_hdf('file.h5',f,df)

    将是一种方式(为每个文件创建一个单独的节点)

  3. 不可附加 - 一旦你写了它,你只能一次检索它,例如你不能选择一个小节

    如果您有一张 table ,那么您可以执行以下操作:

    pd.read_hdf('my_store.h5','a_table_node',['index>100'])

    类似于数据库查询,只获取部分数据

    因此,存储不可追加,也不可查询,而表既可追加,也不可查询

关于python - 在 Pandas 中迭代写入 HDF5 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16637271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com