gpt4 book ai didi

python - 在 HDF 存储中构建数据

转载 作者:可可西里 更新时间:2023-11-01 10:04:29 24 4
gpt4 key购买 nike

我正在处理大量数据集,每个数据集都是一个 pandas DataFrame,由于它们的大小,我需要从磁盘访问它们。从我读到的内容来看,HDF 似乎是与它们一起工作的好方法,但我对构建数据的最佳方法有点困惑,因为每个 DataFrame 都有各种元数据。如果我要将数据存储在内存中,我可能会使用像 namedtuple 这样的东西(尽管这不允许简单的查询):

DataSet = namedtuple('DataSet', 'model method id data')

data 是保存实际数据框的属性,其他字段是文本。但是,我现在需要包含一系列结果字段,我可能会使用 DataFrames 的字典在内存中执行这些操作。如果我将其转储到 mongodb,我可能会得到如下所示的内容:

[{
model: 'mir',
method: 'rfl_max',
id: 's0001',
data: <DataFrame>,
results: [
{
option_r: 10,
window: 30,
data: <DataFrame>
},
...
]
},
....
]

我的基本问题是我能否有效地将此结构应用于 HDF?具体来说:

  1. HDF 是否支持这种嵌套,如果支持,我该怎么做?
  2. 像这样查找数据在 mongo 中非常高效,因为它使用索引。 HDF 也是如此,例如我能否有效地找到与特定方法和 option_r 匹配的所有结果?
  3. 我对 HDF 的有限经验是通过 pandas,它似乎只允许存储面板上的系列和数据帧。这是一个真正的限制,还是我只是做错了什么?

或者,有人知道基于文件的 mongodb 实现可以满足我的目的吗?

最佳答案

HDFStore 支持分层索引,参见 here .

您可以存储附加到特定节点的属性,请参阅 here .这通常仅限于少量元数据。

HDF5 在存储/搜索实际数据方面非常有效,例如一个数据框。结构up 2 you,但不是为了竞争,而是可以补充mongodb。 mongo 很擅长保持/搜索这些“类似 json”的嵌套结构。

您始终可以保留对数据实际位置(DataFrame/Series)的引用,而不是 mongo 数据库中的实际数据。

HDF5 存储/搜索实际数据(非常小的数据集除外)的速度将快几个数量级。

关于python - 在 HDF 存储中构建数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22243753/

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