『python系列』缺失值判定和处理

图片

1.  缺失值判定 一般使用 NaN 代表缺失值,在 Numpy 中可定义为 np.NaN/np.nan,在 Pandas 中可使用 pd.NA 来代表。

  • 缺失值判定
'''缺失值判定'''import pandas as pd import numpy as nppd.isna(pd.NA)pd.isna(np.nan)pd.isna(np.NaN)

输出结果:

图片
  • 测试案例一
'''构造测试用例'''import pandas as pd;array = np.array([[1, np.nan, 3], [4, 5, np.nan]])array
'''当object为array类型'''pd.isna(array)

输出结果:

图片
  • 测试案例二
'''构造测试用例'''import pandas as pd;df = pd.DataFrame([['ant', 'bee', 'cat'], ['dog', None, 'fly'],                   ['dog', np.nan, np.nan], ['dog', np.nan, 'fly']],                  columns=['A','B','C'])df
'''当object为DataFrame类型'''pd.isna(df) ## pd.notna(df)

输出结果:

图片

2.  缺失值填充 

  •  测试案例
'''构造测试用例'''import pandas as pd;df = pd.DataFrame([['ant', 'bee', 'cat'], ['dog', None, 'fly'],                   ['dog', np.nan, np.nan], ['dog', np.nan, 'fly']],                  columns=['A','B','C'])df
'''将B列中缺失值填充为-3'''##方法一tmp=df.copy()tmp.B.fillna(-3, inplace=True)
##方法二def fillmiss(df): if pd.isna(df['B']) : return -3 else: return df['B']tmp=df.copy()tmp['B']=tmp.apply(fillmiss,axis=1)tmp

输出结果:

图片
  • 其他补充
# 填充为 0df.fillna(0)# 填充为指定字符df.fillna('missing')# 指定字段填充df.B.fillna(0, inplace=True)# 不同列替换不同的值values = {'A': 0, 'B': 1, 'C': 2, 'D': 3}df.fillna(value=values)# 不指定填充值,使用 methoddf.fillna(method='backfill')# 对指定列填充平均值df.fillna(df.mean()['A':'B'])

3.  缺失值删除 

# 删除所有有缺失值的行df.dropna(inplace=True)# 删除所有有缺失值的列df.dropna(axis='columns')  ##或者df.dropna(axis=1)# 删除所有值缺失的行df.dropna(how='all')# 指定判断缺失值的列范围df.dropna(subset=['A', 'B']) ##df.A.dropna()

4.  官方文档 

import pandas as pdhelp(pd.isna) ##或者使用 help(pd.isnull)help(pd.notna)help(df.fillna)help(df.dropna)

输出结果:

图片

 2021-11-26 08:40

阅读原文

简介:FRM持证人|传播分享反欺诈风控知识。欢迎关注微信公众号:反欺诈攻防战
(0)
打赏 喜欢就点个赞支持下吧 喜欢就点个赞支持下吧

声明:本文来自“反欺诈攻防战”,分享链接:https://www.zyxiao.com/p/309291    侵权投诉

网站客服
网站客服
内容投稿 侵权处理
分享本页
返回顶部