Улучшить время запроса кадров данных HDF5

Я преобразовал большой (6 ГБ) кадр данных в файл hdf5. Он содержит около 30 миллионов транзакций от 100 тысяч идентификаторов пользователей за 10 лет. Я хочу воссоздать состояние каждого идентификатора пользователя в 48 разных моментов времени. Так, например, «для каждого идентификатора пользователя, сколько транзакций они имели до «1 января 2012 года»». Это одно сводное поле.

Мой текущий метод состоит в том, чтобы запросить hdf5 для каждого user_id, используя функцию запроса pandas для hdf5, затем циклически проходить каждую дату и выводить сводку в определенный момент времени. Проблема в том, что это занимает слишком много времени для каждого идентификатора пользователя - иногда 10-20 секунд для каждого. Похоже, что запрос hdf5 занимает больше всего времени.

Есть ли способ создать индекс в файле hdf5, чтобы ускорить запрос, или поможет сортировка по user_id? Все манипуляции с данными выполняются в пандах, но я не могу распределить работу между несколькими машинами из-за ограничений среды.


person user1253493    schedule 21.09.2016    source источник
comment
Взгляните на индексирование в документы HDF5 и поваренная книга. В частности, обратитесь к этому и это ответы.   -  person Kartik    schedule 22.09.2016
comment
Какова ваша схема фрагментации в файле hdf5? Постарайтесь упорядочить его так, чтобы каждый раз вы читали минимальное количество фрагментов.   -  person kakk11    schedule 22.09.2016
comment
Я не знаю, что такое схема разбиения. Первоначально у меня были данные в форме месяца за месяцем, затем я написал цикл, чтобы добавить все это в один файл.   -  person user1253493    schedule 23.09.2016