想要降低dataframe的內存占用主要有兩種方法:
object
類型的列轉為categorical
類型df = pd.DataFrame({
"col_1":[x for x in range(0, 21)],
"col_2":['even' if val%2==0 else 'odd' for val in range(0, 21)]})
df
# 用info(memory_usage='deep') 看一下真實的內存使用情況
df.info(memory_usage='deep')
可以看到原始memory usage是 1.5KB
但是要注意這些數據的最大值和最小值,確保他們都在這個更小的數據類型的能保留的數據范圍之內
int8
-128 ~ 127int16
-32768 ~ 32767int64
-9223372036854775808 ~ 9223372036854775807df['col_1'] = df['col_1'].astype('int8')
df.info(memory_usage='deep')
數值類型減小之後memory usage是 1.4KB
df['col_2'] = df['col_2'].astype('category')
df.info(memory_usage='deep')
轉categorical類型之後之後memory usage是 371 bytes