【pandas】在Pandas中降低dataframe使用的内存

想要降低dataframe的内存占用主要有两种方法:

  • 使用小一点的数值型 datatype
  • 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

【pandas】在Pandas中降低dataframe使用的内存_第1张图片

# 用info(memory_usage='deep') 看一下真实的内存使用情况
df.info(memory_usage='deep')

可以看到原始memory usage是 1.5KB
【pandas】在Pandas中降低dataframe使用的内存_第2张图片

1. 把数值字段的datatype换成一个更小的数据类型

但是要注意这些数据的最大值和最小值,确保他们都在这个更小的数据类型的能保留的数据范围之内

datatype 数值范围
int8 -128 ~ 127
int16 -32768 ~ 32767
int64 -9223372036854775808 ~ 9223372036854775807
df['col_1'] = df['col_1'].astype('int8')
df.info(memory_usage='deep')

数值类型减小之后memory usage是 1.4KB
【pandas】在Pandas中降低dataframe使用的内存_第3张图片

2. 把object类型转为categorical类型

df['col_2'] = df['col_2'].astype('category')
df.info(memory_usage='deep')

【pandas】在Pandas中降低dataframe使用的内存_第4张图片
转categorical类型之后之后memory usage是 371 bytes

你可能感兴趣的:(pandas,python,pandas)