以下数据中sex第3个,num第2个存在缺失数据
df=pd.DataFrame({
'name':['John','Smith','Atty'],
'sex':['male','male',None],
'num':[1,None,3]
})
一、识别缺失值
在python中采用df.isna()来判断数组中是否存在缺失值
print(df.isna())
也可以对某列进行检验:
print(df.sex.isna())
二、缺失值填充
2.1采用df.fillna(x)可以将缺失值填充为指定的值
print(df.fillna(2))
2.2取后一个有效值填充
print(df.fillna(method='bfill'))
由于sex最后一个值是空值,后面没有有效值,所以没有被填充
2.3取前一个有效值填充
print(df.fillna(method='ffill'))
2.4取列平均值进行填充
print(df.num.fillna(df.num.mean()))
由于数据中第二列是字符串不能计算均值,第三列是数值,所以第三列才能用均值填充法。
2.5插值法填充
使用interpolate函数进行插值,这里执行的是线性插值
print(df.num.interpolate())
三、缺失值删除
3.1使用df.dropna()来删除缺失值
print(df.dropna())
3.2删除有缺失值的列
print(df.dropna(axis=1))
3.3删除至少有两个缺失值的行
print(df.dropna(thresh=2))
由于数据不存在这种情况,所以没有数据被删除