机器学习最常用的数据清洗之 dropna drop fillna,存一份方便查资料用!
dropna
# axis=0 删除行,axis=1,删除列
# how=any, 只要有缺失值,就删除该行或该列,how=all,所有值缺失才删除
# thresh 至少有thresh个非缺失值,否则删除
# subset 在哪些列中查看是否有缺失值
# inplace 是否在原数据上操作,真则在原始数据上改,否返回新的copy,去掉了缺失值的作为副本
df.dropna(axis=0, how='any', thresh=None,subset=None,
inplace=False)
drop
# drop
# labels 按标签要删除的行或列
# axis=0,行,=1表示列
# index\columns 指定行或列,df.drop(index=1) 等价于 df.drop(1,axis=0)
# level 针对多级标签,多级标签计算时,从0开始
# inplace 同 dropna 用法
# errors:如果传入标签不存在则会报错,可选择raise,ignore,default=raise,ignore则抑制错误丢弃现有标签
drop(labels=None, axis=0,index=None, columns=None,
level=None, inplace=False, errors='raise')
fillna
# fillna
# value: scalar, dict, Series, DataFrame
# method: 'backfill', 'bfill', 'pad', 'ffill', None
# method 例如在列上操作,ffill/pad表示用前一个值填充缺失值, backfill/bfill 表示用后一个值来填充缺失值
# limit:填充的缺失值个数限制
# downcast: dict, default=None ,即选dict,可以使类型向下转换,float64->int64
fillna(value=None, method=None, axis=None, inplace=None,
limit=None, downcast=None, **kwargs)
参考示例
# 实例 《蜥蜴书》
housing.dropna(subset=["total_bedrooms"])
housing.drop("total_bedrooms",axis=1)
# 求训练集的中位数
median = housing["total_bedrooms"].median()
# 中位数填充
housing["total_bedrooms"].fillna(median)