【干货+福利】Python中查询缺失值的4种方法

共 2687字,需浏览 6分钟

 ·

2022-11-08 17:03



ada2a26bb7e8a8d4a1382b207b4e6d97.webp



【文末送书】


在我们日常接触到的Python中,狭义的缺失值一般指DataFrame中的NaN。广义的话,可以分为三种。



  • 缺失值:在Pandas中的缺失值有三种:np.nan (Not a Number) 、 None 和 pd.NaT(时间格式的空值,注意大小写不能错)


  • 空值:空值在Pandas中指的是空字符串"";


  • 最后一类是导入的Excel等文件中,原本用于表示缺失值的字符“-”、“?”等。

今天聊聊Python中查询缺失值的4种方法。




缺失值 NaN ①


在Pandas中查询缺失值,最常用的⽅法就是isnull(),返回True表示此处为缺失值。


我们可以将其与any()⽅法搭配使用来查询存在缺失值的行,也可以与sum()⽅法搭配使用来查询存在缺失值的列。



  • isnull():对于缺失值,返回True;对于⾮缺失值,返回False。


  • any():⼀个序列中有⼀个True,则返回True,否则返回False。


  • sum():对序列进行求和计算。

在交互式环境中输入如下命令:



df.isnull()


输出:


74e395dbdcb674f1f6823ddf520a3a3e.webp

在交互式环境中输入如下命令:



df.isnull().any(axis=1)


输出:


f968cdfb79db27058cf5fb64842b7a60.webp

在交互式环境中输入如下命令:



df.isnull().sum()


输出:


8814314d935a6452a9efa18f49af0744.webp

注:isna()和isnull()的用法是相同的,这里不再演示。





缺失值 NaN ②


由于在Pandas中isnull()方法返回True表示此处为缺失值,所以我们可以对数据集进行切片也可实现找到缺失值。


在交互式环境中输入如下命令:



df[df.isnull().values==True]


输出:


a8276ea38b88179824e070a56b57a48f.webp

注意:如果某行有多个值是空值,则会重复次数出现,所以我们可以利用df[df.isnull().values==True].drop_duplicates()来去重。



另外,notnull()方法是与isnull()相对应的,使用它可以直接查询非缺失值的数据行。



df[df["A列"].notnull()]


输出:


95360541efd515fef02f3ea476ee7368.webp



空值


空值在Pandas中指的是空字符串"",我们同样可以对数据集进行切片找到空值。


在交互式环境中输入如下命令:



df[df["B列"] == ""]


输出:


ba76add73e71dcae3039869dc1d41650.webp

此外,也可以利用空值与正常值的区别来区分两者,比如isnumeric()方法检测字符串是否只由数字组成。


在交互式环境中输入如下命令:



df[df["B列"].str.isnumeric() == False ]


输出:


9b79ac9285345368a031d305ed4bef5e.webp

如上所示,同样查询到了数据集中的空值。




字符“-”、“?”等


很多时候,我们要处理的是本地的历史数据文件,在这些Excel中往往并不规范,比如它们有可能会使用“*”、“?”、“—”、“!”等等字符来表示缺失值。


对于这类文本,我们可以使用正则表达式来匹配缺失值。



import re

df[df["C列"].apply(lambda x: len(re.findall('NA|[*|?|!|#|-]', x)) != 0)]


输出:


d4be5c39ce510986dea3daa8aaf1d38b.webp

如上所示,我自定义了匿名函数lambda,作用是在文本列的每一行中查找以下文本值:“NA”、“*”、“?” 、“!” 、“#”、“-”,并检查它找到的列表的长度。如果列表不为零,则表示找到了代表缺失值的字符,因此该行中至少有一个缺失值。



df[df["D列"].apply(lambda x: len(re.findall('NA|[*|?|!|#|-]', x)) != 0)]


输出:


d33edea31b6b203b57ee5570457416e2.webp

我们可以对不同列都进行同样的缺失值查询,另外也可以根据自己的实际情况,替换正则表达式中代表缺失值的字符。




赠书福利!











  1. 赠书为「轻松实现Python数据分析与可视化」





  2. 赠送5本,指定时间内本文留言排名前5即可获赠,可以分享阅读此干货后的收获呀~






  3. 截止2022/11/11/11:11


















Python + Excel + xlwings + matplotlib + Pandas 汇聚数据处理与分析的高效工具应用。全书85集配套视频+129个实例讲解!全面系统,覆盖了常用的Excel操作,从单元格操作到图表绘制,教你轻松实现Python数据分析和可视化


易学易懂,对比Excel,降低学习Python的难度,插图丰富,零基础入门学习,轻松实现办公自动化!



浏览 231
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报