21.数据预处理之缺失值处理

  • 缺失值首先需要根据实际情况定义
  • 可以采取直接删除法
  • 有时候需要使用替换法或者插值法
  • 常用的替换法有均值替换、前向、后向替换和常数替换
df.age.fillna(df.age.mean())
df.age.fillna(df.age.median())
df.fillna(20)

#实操
df.apply(lambda x: sum(x.isnull())/len(x),axis=0)
df.head(3)
#删除掉缺失值,对每一行进行遍历,如果每行中有一个缺失值,就把该行去掉
df.dropna(how='any',axis=0)
#删除掉缺失值,对每一行进行遍历,如果每行中全部都为缺失值,就把该行去掉
df.dropna(how='all',axis=0)
#一组数据,如果某一行中的特定列中的任何一个列有缺失值,则删除该行
df.dropna(how='any',subset=['condition','price','Mileage'])

#对所有数据的缺失值填补0
df.fillna(0)
df.Mileage.head(6)
#mileage列中如果有缺失值,则利用该列的平均值代替该缺失值
df.Mileage.fillna(df.Mileage.mean(),inplace=True)

#查找 列Exterior_color中值为NaN的行
df[df['Exterior_color'].isnull()]

#返回数据的众数,众数不止一个,返回可能是序列[0]为序列的第一个
df['Exterior_color'].mode()[0]
#凡是字段Exterior_color为缺失的值都用该字段的众数填充
df['Exterior_color'].fillna(df['Exterior_color'].mode()[0])


#针对不同的变量使用不同的方法填充数据
#凡是外观颜色为空值则填补Black;凡是里程数为空值则填补6889
df.fillna(value={'Exterior_color':'Black','Mileage':df['Mileage'].median()},inplace=True)


#前向填补方法ffill
#后向填补方法bfill

df['Exterior_color'].fillna(method='ffill')




发布了94 篇原创文章 · 获赞 22 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/l641208111/article/details/104242008