Чтение части набора данных, хранящегося в HDF5 - python 2.7

У меня есть довольно большой файл 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.

/Мартин


person Martin Petri Bagger    schedule 02.12.2013    source источник


Ответы (1)


Ваша проблема выглядит как алгоритм уменьшения карты. Поскольку у вас есть огромный набор данных, вы должны преобразовать свои данные в алгоритм уменьшения карты, который выводит пары ключ-значение данных, которые вас интересуют, в кластере Hadoop. Таким образом, вы можете обрабатывать большое количество данных. Проверьте эту ссылку для справки:

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

Hadoop также использует HDFS, так что это может вам помочь. Mapper манипулирует только теми данными, которые вас интересуют, и выводит ключ, значение, а редуктор выполняет некоторую агрегацию.

person fscore    schedule 02.12.2013