У меня есть относительно большой набор данных (около 8 ГБ), и я прочитал его в блокноте jupyter, используя h5py.
Форма набора данных выглядит примерно так (50000000, 384). В моем идеальном наборе данных это было бы транспонировано, чтобы я мог просматривать каждый «столбец» в наборе данных. Единственный способ, которым я смог добиться получения каждого «столбца», - это либо индексация для каждого столбца (что очень медленно и интенсивно для ЦП, потому что оно идет по строкам в 50000000 строк), либо преобразовать данные h5 в np.array и транспонировать это, что также очень медленно и неэффективно.
Например, у меня есть файл h5:
chunk_file = h5py.File(chunk_fil_1, "r")
chunk_file["ex_dat"]
выход:
HDF5 dataset "ex_dat": shape (50000000, 384)
Если я сделаю это:
len(chunk_file["ex_dat"][0])
выход:
384
Здесь я хотел бы, чтобы мой вывод был всеми 50000000 появлений столбца «0».
Есть ли эффективный способ индексировать файл h5 для столбцов, таких как данные, без чтения каждой строки? Или другие альтернативы для чтения этого большого набора данных? Моя конечная цель - сохранить отдельные «столбцы» в кадре данных pandas.
arr = chunk_file["ex_dat"][:,0]
? Я ожидаю, что он читает столбец 0. Это будет медленнее, чем чтениеchunk_file["ex_dat"][0,:]
, но все же должно быть разумным. - person hpaulj   schedule 22.09.2017Dataframe
с 384 столбцами и 50... строками? Вы только что прочитали все это. - person hpaulj   schedule 22.09.2017