读取存储在 HDF5 中的部分数据集 - python 2.7

Posted

技术标签:

【中文标题】读取存储在 HDF5 中的部分数据集 - python 2.7【英文标题】:Reading part of dataset stored i HDF5 - python 2.7 【发布时间】:2013-12-18 02:02:39 【问题描述】:

我有一个相当大的 HDF5 文件,其中存储(除其他外)一个包含 150 名参与者的眼动追踪数据的大型时间序列数据集。

In [20]: f['data_collection/events/eyetracker/BinocularEyeSampleEvent/']
Out[21]: <HDF5 dataset "BinocularEyeSampleEvent": shape (8297323,), type "|V178">

我无法将所有这些都读入内存,因为它太大了,但是我如何才能读到其中的一部分呢?

我想做这样的事情 - 当时读取一个参与者(参与者的列名是“名称”),执行一些操作并保存到一个较小的数据框:

for name in f['data_collection/events/eyetracker/BinocularEyeSampleEvent/'][name]:
    df = f['data_collection/events/eyetracker/BinocularEyeSampleEvent/']
    ...
    ...

我该怎么做?我正在使用 h5py 读取 HDF5 文件。

/马丁

【问题讨论】:

【参考方案1】:

您的问题看起来像 Map Reduce 算法。由于您拥有庞大的数据集,因此您应该将数据转换为 map reduce 算法,该算法在 hadoop 集群上输出您关心的数据的键值对。这样您就可以处理大量数据。检查此链接以获取帮助:

http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/

Hadoop 也使用 HDFS,因此它可能会对您有所帮助。 Mapper 只操作您关心的数据并输出键、值,reducer 进行一些聚合。

【讨论】:

以上是关于读取存储在 HDF5 中的部分数据集 - python 2.7的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandas 读取 hdf5 数据集

在 Fortran 中读取 HDF5 数据集的子集时出现问题

尝试读取存储在 Julia 中的 HDF5 存储中的表作为数据框

读取存储在 HDF5 中的数据帧

HDF5 简单读取数据集失败

将时间序列数据存储在具有可扩展时间维度的 HDF5 中