Python io.bytesio занимает в 3 раза больше места при сохранении в pandas - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь сохранить изображения в 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), это выглядит правильно, но полученные файлы намного больше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...