Я пытаюсь сохранить изображения в dataframe панд и их в hd5.Фрагмент кода:
def get_image(...):
return io.BitesIO object
df['image'] = df.apply(lambda x: get_image(..., axis=1)
print('df size=', sys.getsizeof(df.iloc[0]['image']))
image = get_image(...)
print('array size=', sys.getsizeof(image))
дает следующий вывод:
df size=1920
array size=1920
Однако, когда я пытаюсь их сохранить:
#take only 1 column
df = df[['image']].copy()
df.to_hdf(filepath, key='dataset', mode='w', Table=True)
imsave(image_filepath, image)
размер файла 1920,но hdf в 3 раза больше.(Я тестирую его на 1000 файлов, код, приведенный выше, предназначен только для 1 файла, чтобы сделать код меньше).
Я полагаю, это что-то о том, как панды конвертируют байты в данные столбца.Но я понятия не имею, как я могу это исправить?
Обновление: если я проверяю sys.getsizeof (df), это выглядит правильно, но полученные файлы намного больше