A pandas Размер файла данных значительно увеличивается после его сохранения как .h5
в первый раз. Если я сохраню загруженный фрейм данных, размер файла снова не увеличится. Это заставляет меня подозревать, что какие-то метаданные сохраняются в первый раз. В чем причина этой складки?
Есть ли простой способ избежать этого?
Я могу сжать файл, но я делаю сравнения без сжатия. Будет ли проблема масштабироваться по-другому при сжатии?
Пример кода ниже. Размер файла увеличивается с 15.3 MB
до 22.9 MB
import numpy as np
import pandas as pd
x = np.random.normal (0,1, 1000000)
y = x*2
dataset = pd.DataFrame({'Column1': x, 'Column2': y})
print (dataset.info(memory_usage='deep'))
dataset.to_hdf('data.h5', key='df', mode='w')
dataset2 = pd.read_hdf("data.h5")
print (dataset2.info(memory_usage='deep'))
dataset2.to_hdf('data2.h5', key='df', mode='w')
dataset3 = pd.read_hdf("data2.h5")
print (dataset3.info(memory_usage='deep'))
Вывод:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000000 entries, 0 to 999999
Data columns (total 2 columns):
Column1 1000000 non-null float64
Column2 1000000 non-null float64
dtypes: float64(2)
memory usage: 15.3 MB
None
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1000000 entries, 0 to 999999
Data columns (total 2 columns):
Column1 1000000 non-null float64
Column2 1000000 non-null float64
dtypes: float64(2)
memory usage: 22.9 MB
None
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1000000 entries, 0 to 999999
Data columns (total 2 columns):
Column1 1000000 non-null float64
Column2 1000000 non-null float64
dtypes: float64(2)
memory usage: 22.9 MB
None
Это происходит потому, что RangeIndex
преобразуется в Int64Index
при сохранении. Есть ли способ оптимизировать это? Похоже, что нет никакого способа отбросить индекс:
https://github.com/pandas-dev/pandas/issues/8319