Python查询缺失值的4种方法总结

作者:朱小五 时间:2023-10-29 13:42:08 

在我们日常接触到的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()

输出:

Python查询缺失值的4种方法总结

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

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

输出:

Python查询缺失值的4种方法总结

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

df.isnull().sum()

输出:

Python查询缺失值的4种方法总结

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

缺失值 NaN ②

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

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

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

输出:

Python查询缺失值的4种方法总结

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

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

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

输出:

Python查询缺失值的4种方法总结

空值

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

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

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

输出:

Python查询缺失值的4种方法总结

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

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

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

输出:

Python查询缺失值的4种方法总结

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

字符“-”、“?”等

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

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

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

输出:

Python查询缺失值的4种方法总结

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

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

输出:

Python查询缺失值的4种方法总结

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

来源:https://mp.weixin.qq.com/s/HbaOHmdAx2Usk9QrXujM1Q

标签:Python,查询,缺失值
0
投稿

猜你喜欢

  • 怎样取得局域网中所有SQL Server的实例

    2009-01-08 13:20:00
  • Python深度学习pytorch神经网络Dropout应用详解解

    2023-01-02 11:18:54
  • mysql的数据压缩性能对比详情

    2024-01-19 13:02:43
  • 通过实例了解JS 连续赋值

    2024-05-02 16:15:14
  • js自定义trim函数实现删除两端空格功能

    2024-04-29 13:21:34
  • 详细介绍基于MySQL的搜索引擎MySQL-Fullltext

    2024-01-27 16:30:30
  • ajax请求get与post的区别总结

    2024-04-29 13:58:25
  • python网络编程之文件下载实例分析

    2021-06-04 08:02:29
  • 剖析SQL Server 事务日志的收缩和截断

    2009-01-15 13:04:00
  • Python+OpenCV实现信用卡数字识别的方法详解

    2022-01-15 14:25:41
  • 出现“不能执行已释放的Script代码”错误的原因及解决办法

    2024-04-19 10:02:13
  • 高质量Python代码编写的5个优化技巧

    2022-04-20 16:49:16
  • MySQL 多表关联一对多查询实现取最新一条数据的方法示例

    2024-01-22 13:58:17
  • ASP将Excel数据导入到SQLServer的实现代码

    2011-03-10 10:38:00
  • 关于 Flash Banner 设计的建议

    2010-02-02 18:19:00
  • python获取指定网页上所有超链接的方法

    2023-07-18 11:50:20
  • MySQL的远程连接出现错误提示分析

    2011-07-01 11:34:00
  • Python+Appium自动化操作微信的教程分享

    2023-01-06 09:18:09
  • python3.6生成器yield用法实例分析

    2022-11-22 00:07:05
  • ASP FSO显示特殊文件夹的实现代码(畸形目录名、UNC路径)

    2012-11-30 20:10:46
  • asp之家 网络编程 m.aspxhome.com