在数据分析和数据挖掘处理中常常会发现数据中存在缺失值,因此需要对此进行处理。
工具:Pandas
数据如下:
调用 对象.isnull()函数可以对数据进行缺失值检测,结果如下:
可以看到,缺失值的地方为True。
缺失值处理的方式有三种:过滤法、填充法、插值法。
- 过滤法:指当缺失的观测比例非常低时(如5%以内),直接删除存在缺失的观测,也就是行;或当某些变量的缺失比例非常高时(如85%以上),直接删除这些缺失的变量,也就是列。
调用 对象.dropna(axis=0,how='any',thresh=None):axis=0表示删除行,axis=1表示删除列;how可选any或all,any表示删除带有NaN的行,all表示删除整行数据全为NaN的行;thresh为整数类型,表示删除的条件,如thresh=3表示一行中至少有3个非NaN值时,才将其保留。
- 填充法:指用其他数值填充缺失值。
调用 对象.fillna(value=None,method=None,axis=None,inplace=False): value表示用常数填充,比如value=5就是用5填充NaN,也可以用字典进行填充,当然也可以用均值、中位数等进行填充;method可以选择填充方式,pad/ffill表示用前一行非缺失值填充该缺失值,backfill/bfill表示用后一行非缺失值填充该缺失值;inplace=True表示直接修改原对象,inplace=False表示创建一个副本并修改,可以用于赋值,原数据不发生改变。
- 插值法:可以用KNN、拉格朗日等方法补值。