и в 8 раз лучше чем
отаю с довольно большим набором данных (более 4 ГБ), который я импортировал вpandas
, Некоторые столбцы в этом наборе данных являются простыми индикаторами True / False, и, естественно, наиболее эффективным способом их хранения является использованиеbool
dtype для этого столбца. Тем не менее, столбец также содержит некоторые значения NaN, которые я хочу сохранить. Прямо сейчас это приводит к тому, что столбец имеет тип с плавающей запятой (со значениями1.0
, 0.0
а такжеnp.nan
) или объект, но они оба используют слишком много памяти.
В качестве примера:
df = pd.DataFrame([[True,True,True],[False,False,False],
[np.nan,np.nan,np.nan]])
df[1] = df[1].astype(bool)
df[2] = df[2].astype(float)
print(df)
print(df.memory_usage(index=False, deep=True))
print(df.memory_usage(index=False, deep=False))
результаты в
0 1 2
0 True True 1.0
1 False False 0.0
2 NaN True NaN
0 100
1 3
2 24
dtype: int64
0 24
1 3
2 24
dtype: int64
Каков наиболее эффективный способ хранения таких значений, зная, что они могут принимать только 3 различных типа значений:True
, False
а также<undefined>