读取部分数据集存储我HDF5 - python 2.7

时间:2013-12-02 11:18:23

标签: python split dataset hdf5 dataframe

我有一个相当大的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 个答案:

答案 0 :(得分:0)

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

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

Hadoop也使用HDFS,因此它可能对您有所帮助。 Mapper只操纵您关注的数据并输出key,value和reducer进行一些聚合。