python - 如何将多个 hdf5 文件聚合成一个图像

标签 python pandas hdf5

我有几个(最多几百个)hdf5 文件,其中包含并行模拟的结果:每个计算节点创建一个独立的 hdf5 文件以避免任何同步问题。

有什么方法可以创建 hdf5 文件中所有数据的“图像”,例如,这个“图像”看起来好像包含所有数据,但实际上,它会提供来自其他文件的数据?

这是我要找的:

   "data-node0.h5"
      spike/PopulationA -> pandas data frame columns=[0,3,6,9]
   "data-node1.h5"
      spike/PopulationA -> pandas data frame columns=[1,4,7,10]
   "data-node2.h5"
      spike/PopulationA -> pandas data frame columns=[2,5,8,11]
      spike/PopulationB -> pandas data frame columns=[0,1,2,3]

   "data.h5" = aggregate("data-node0.h5","data-node1.h5","data-node2.h5")
   "data.h5"
      spike/PopulationA -> pandas data frame columns=[0,1,2,3,4,5,6,7,8,9,10,11]
      spike/PopulationB -> pandas data frame columns=[0,1,2,3]

注意 data.h5 文件不包含任何数据。它使用来自 data-nodeX.h5 文件的数据。

更新 hdf5文件中的数据是具有时间序列的pandas数据帧。每个数据框中的列是从模型中的对象记录的一维 numpy 数组。列标识符是模型中对象的唯一 ID。表索引是以毫秒为单位的模型时间。

最佳答案

在 1.10+ 版本中,HDF5 添加了虚拟数据集功能,允许您将来自多个数据集的数据映射到顶级“虚拟”数据集,该数据集本身不存储任何数据。

文档在这里: https://support.hdfgroup.org/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html

当然,复杂的是,您似乎是通过 Pandas 使用 PyTables,而不是原始的 HDF5。 PyTables 是 HDF5,但在 HDF5 的组和数据集之上添加了一层结构和语义。为了创建基于 PyTables 的虚拟数据集,您将不得不深入挖掘 PyTables HDF5 对象的子结构以设置映射。此外,您创建的任何虚拟数据集都将是常规 HDF5 数据集,而不是 PyTables 表。鉴于 HDF5 的基本知识,这当然是可行的,尽管工作量可能比您希望的要多。

h5py(用于 HDF5 的更底层和更直接的 Python 包装器)支持虚拟数据集功能,顺便说一句,因此您仍然可以在 Python 中执行所有操作,只是不通过 PyTables。

关于python - 如何将多个 hdf5 文件聚合成一个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868623/

相关文章:

python - 删除大型 .csv 文件中的重复项

python - 将 Pandas 索引值提取为单个日期时间戳变量,而不是索引

python - 如何从 Pandas 中的 DatetimeIndex 获取滚动窗口内的持续时间

c++ - 按照创建顺序读取/写入 HDF5 文件

c++ - 糟糕 : the __cmp__ function

python - 我尝试在 VS code 中安装 cx_Oracle 并收到错误 Microsoft Visual C++ 14.0 或更高版本是必需的

Python 3 构建字节数组

python - 计算多列中每个唯一行的字符串出现次数

python - 将大型 Python 数组保存到磁盘以备后用---hdf5?其他一些方法?

python - 使用 HDF5 和 Pandas 通过分块读取数据