pandas处理缺失值

相关函数

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:是都直接在原数据上进行修改,默认不改变原数据,而是生成新的副本

how,thresh,axis用法示例
subset,axis用法示例

填充缺失值

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()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。