相关函数
df.dropna() # 删除缺失值
df.fillna() # 填充缺失值
df.isnull() # 判断是否确实值,下同
df.notnull()
df.isna()
df.notna()
相关概念
缺失值:在dataframe中为nan或者naT(缺失时间),在series中为none或者nan即可,python中的None也会被当作NA处理
注:python中的空字符串并不会被pandas当作缺失值处理,空字符串就只是空字符串
删除缺失值
df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
axis: 维度,axis=0纵向处理,axis=1表示横向处理,默认为0
how: "all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列
thresh: 一行或一列中至少出现了thresh个 非缺失值 才删除。
subset: 在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)
inplace:是都直接在原数据上进行修改,默认不改变原数据,而是生成新的副本
填充缺失值
df.fillna(value=None, method=None, axis=0, inplace=False, limit=None)
value: 用固定值去填充缺失值
axis: 确定填充维度,axis=0纵向处理,axis=1表示横向处理,默认为0
method: ffill,用缺失值前面的一个值代替缺失值,axis =1时,左方值填充,如果axis=0时,上方值填充
backfill/bfill,缺失值后面的一个值代替缺失值。axis =1时,右方值填充,如果axis=0时,下方值填充
limit: 指定填充次数,超过该值时,剩余的缺失值不做处理
>>> df.fillna(value={'name':'NAME', 'addr':'ADDR', 'born':'BORN'})
name addr born
0 Tome ADDR BRON
1 BeiJing BRON
2 Jack NewYork 1990-04-25
注:out[260]处注释中“2行name列为空值”应是”1行name列为空值“。手滑打错了...
缺失值判断
isnull()
isna()
notnull()
notna()