缺失值首先要根据实际情况定义:
- 可以采用直接删除法
- 有时候需要使用替换法或插值法
例1:
# 判断是否缺失
df.isnull()
# np.sum()默认是沿着行的方向进行操作,即axis=0,计算每一列的和
np.sum(df.isnull())
#计算缺失率
df.apply(lambda x: sum(x.isnull())/len(x),axis=0)
#how='any'指的是只要这一行有一个缺失值就会被删除
#how='all'指的是这一行全部缺失就会被删除#默认是0,删除掉有缺失值为0 的行df.dropna()
df.dropna(how='any',axis=0)
例2:
#指的是把某列删除
df.drop('chargeid ',axis=1)
#删除两列
df.drop(labels=['chargeid ','ID'],axis=1)
#根据这两个变量,只要有一个缺失的,就把它删掉
df.dropna(how='any',subset=['settlementdate','chargeid'])
例3:
#缺失值用平均值来填充
df.settlementdate.fillna(df.settlementdate.mean())
#字符型缺失值一般用众数来填充
df.settlementdate.fillna(df.settlementdate.mode()[0])
#用某一值来填补缺失值
df.settlementdate.fillna(20)
#不指定哪个变量时,所有的缺失值都用某个数填充
df.fillna(20)
inplace=True 才指对原数据进行处理
# 不同的变量一起填补
df.fillna(value={'gender':df.gender.mode()[0],
'age':df.age.mean(),'income':df.income.median()})
# 前一项填补
df.fillna(method='ffill')
#下一项填补
df.fillna(method='bfill')