python中nan值判断与处理

查看空值

df.head() #查看前5行数据
np.isnan(df).sum()  #获得nan的数量
np.isinf(df).sum()  #获得infinity的数量
df.isnull().any()   #判断哪些”列”存在缺失值
df[df.isnull().T.any().T]  #找出含有nan的所有行

空值处理

填充

#空值处理方式
data.fillna(data.mean(), inplace = True)#以均值填充
data.fillna(0, inplace = True)#以0填充

删除

删除空值所在的行:

df.dropna(axis=0, how='any', inplace=True)

axis:0-行操作(默认),1-列操作
how:any-只要有空值就删除(默认),all-全部为空值才删除
inplace:False-返回新的数据集(默认),True-在愿数据集上操作

对某一列进行判断并删除整行:

mydf.dropna(subset=['列名'],inplace=True)

subset参数指定列,inplace参数为修改原dataframe。如果不inplace=False或不设置,则需要接受修改后的返回数据。

np.isnan()和pd.isnull()对比

# 首先创建一个DataFrame:
bb = pd.DataFrame({'a':[0,1,2,np.nan]})
bb
 
>>>     a
    0	0.0
    1	1.0
    2	2.0
    3	NaN
 
# 先测试一下np.isnan()
np.isnan(bb)
>>>     a
    0	False
    1	False
    2	False
    3	True
# 值得一提的是,如果想获悉整个DataFrame有无空值,可以在此基础上这样做:
 
np.isnan(bb).all()
>>> a    False
    dtype: bool          # 这行是指返回值的dtype
 
# 再测试一下isnull()
pd.isnull(bb)
>>>     a
    0	False
    1	False
    2	False
    3	True

由上可见,其实np.isnan()和pd.isnull()都可以对不论是DataFrame、Python list还是仅仅一个数值进行空值检测。但一般在实际应用中,np.isnan()多用于单个值的检验,pd.isnull()用于对一个DataFrame或Series(整体)的检验。

参考资料:
https://blog.csdn.net/weixin_41712499/article/details/82719987
https://blog.csdn.net/weixin_42323343/article/details/98734039

在这里插入图片描述

发布了205 篇原创文章 · 获赞 655 · 访问量 53万+

猜你喜欢

转载自blog.csdn.net/qq_33414271/article/details/102978620