我有一个相当大的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文件。
/马丁
答案 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进行一些聚合。