Python 在HDF存储中构造数据
我正在处理大量的数据集,每个数据集都有一个数据帧,由于数据集的大小,我需要从磁盘访问这些数据集。据我所知,HDF似乎是一种很好的处理方式,但我对构造数据的最佳方式有点困惑,因为每个数据帧都有不同的元数据位。如果我将数据存储在内存中,我可能会使用类似namedtuple的东西(尽管这不允许进行简单的查询):Python 在HDF存储中构造数据,python,mongodb,data-structures,pandas,hdf5,Python,Mongodb,Data Structures,Pandas,Hdf5,我正在处理大量的数据集,每个数据集都有一个数据帧,由于数据集的大小,我需要从磁盘访问这些数据集。据我所知,HDF似乎是一种很好的处理方式,但我对构造数据的最佳方式有点困惑,因为每个数据帧都有不同的元数据位。如果我将数据存储在内存中,我可能会使用类似namedtuple的东西(尽管这不允许进行简单的查询): data是保存实际数据帧的属性,其他字段是文本。然而,我现在需要包括一系列的结果字段,我可能会在内存中使用数据帧的dict。如果我将其转储到mongodb,我可能会有如下内容: [{
data
是保存实际数据帧的属性,其他字段是文本。然而,我现在需要包括一系列的结果字段,我可能会在内存中使用数据帧的dict。如果我将其转储到mongodb,我可能会有如下内容:
[{
model: 'mir',
method: 'rfl_max',
id: 's0001',
data: <DataFrame>,
results: [
{
option_r: 10,
window: 30,
data: <DataFrame>
},
...
]
},
....
]
[{
模型:“和平号”,
方法:“rfl_max”,
id:'s0001',
数据:,
结果:[
{
备选方案:10,
窗口:30,
数据:
},
...
]
},
....
]
我的基本问题是,我能否有效地将此结构应用于HDF?具体而言:
或者,是否有人知道基于文件的mongodb实现可能满足我的目的?
HDFStore
支持分层索引,请参阅
可以存储附加到特定节点的属性,请参见。这通常仅限于少量元数据
HDF5在存储/搜索实际数据(例如数据帧)方面非常有效。该结构由您自行设计,但它不是为了竞争,而是为了补充mongodb
。mongo擅长保持/搜索这些类似于json的嵌套结构
您可以始终保留对数据(数据帧/系列)实际位置的引用,而不是mongo db中的实际数据
HDF5在存储/搜索实际数据(非常小的数据集除外)方面将快几个数量级。感谢您的回复。所以你是说任何复杂的查询都可以在mongo中完成,但是将数据存储在HDF5中是好的?我尽量避免使用mongo,因为它需要一个中央服务器(我无权访问),这使得共享数据变得困难。每个数据帧都不是很大,目前我只是简单地将它们酸洗并加载到内存中,所以也许我应该继续这样做,复杂的查询肯定可以在HDF5中完成。但是,您无法轻松查询节点本身。请参见pytables.org了解更多信息。
[{
model: 'mir',
method: 'rfl_max',
id: 's0001',
data: <DataFrame>,
results: [
{
option_r: 10,
window: 30,
data: <DataFrame>
},
...
]
},
....
]