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

目录
  • 缺失值 NaN ①
  • 缺失值 NaN ②
  • 空值
  • 字符“-”、“?”等

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

输出:

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

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

输出:

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

df.isnull().sum()

输出:

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

缺失值 NaN ②

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

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

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

输出:

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

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

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

输出:

空值

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

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

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

输出:

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

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

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

输出:

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

字符“-”、“?”等

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

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

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

输出:

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

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

输出:

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

到此这篇关于Python查询缺失值的4种方法总结的文章就介绍到这了,更多相关Python查询缺失值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 检查数据中是否有缺失值,删除缺失值的方式

    # 检查数据中是否有缺失值 np.isnan(train).any() Flase:表示对应特征的特征值中无缺失值 True:表示有缺失值 通常情况下删除行,使用参数axis = 0,删除列的参数axis = 1,通常不会这么做,那样会删除一个变量. print(df.dropna(axis = 0)) 以上这篇python 检查数据中是否有缺失值,删除缺失值的方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Python数据分析的八种处理缺失值方法详解

    目录 1. 删除有缺失值的行或列 2. 删除只有缺失值的行或列 3. 根据阈值删除行或列 4. 基于特定的列子集删除 5. 填充一个常数值 6. 填充聚合值 7. 替换为上一个或下一个值 8. 使用另一个数据框填充 总结 技术交流 在本文中,我们将介绍 8 种不同的方法来解决缺失值问题,哪种方法最适合特定情况取决于数据和任务.欢迎收藏学习,喜欢点赞支持,技术交流可以文末加群,尽情畅聊. 让我们首先创建一个示例数据框并向其中添加一些缺失值. 我们有一个 10 行 6 列的数据框. 下一步是添加缺失

  • python缺失值的解决方法总结

    1.解决方法 (1)忽视元组. 缺少类别标签时,通常这样做(假设挖掘任务与分类有关),除非元组有多个属性缺失值,否则该方法不太有效.当个属性缺值的百分比变化很大时,其性能特别差. (2)人工填写缺失值. 一般来说,这种方法需要很长时间,当数据集大且缺少很多值时,这种方法可能无法实现. (3)使用全局常量填充缺失值. 将缺失的属性值用同一常数(如Unknown或负无限)替换.如果缺失值都是用unknown替换的话,挖掘程序可能会认为形成有趣的概念.因为有同样的价值unknown.因此,这种方法很简

  • Python数据分析之缺失值检测与处理详解

    目录 检测缺失值 缺失值处理 删除缺失值 填补缺失值 检测缺失值 我们先创建一个带有缺失值的数据框(DataFrame). import pandas as pd df = pd.DataFrame( {'A': [None, 2, None, 4], 'B': [10, None, None, 40], 'C': [100, 200, None, 400], 'D': [None, 2000, 3000, None]}) df 数值类缺失值在 Pandas 中被显示为 NaN (Not A N

  • Python Pandas对缺失值的处理方法

    Pandas使用这些函数处理缺失值: isnull和notnull:检测是否是空值,可用于df和series dropna:丢弃.删除缺失值 axis : 删除行还是列,{0 or 'index', 1 or 'columns'}, default 0 how : 如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除 inplace : 如果为True则修改当前df,否则返回新的df fillna:填充空值 value:用于填充的值,可以是单个值,或者字典(key是列名,valu

  • python如何去除异常值和缺失值的插值

    1.使用箱型法去除异常值: import numpy as np import pandas as pd import matplotlib as plt import os data = pd.read_excel('try.xls', header=0) # print(data.shape) # print(data.head(10)) # print(data.describe()) neg_list = ['位移'] print("(1)数据的行数为:") R = data.

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

    目录 缺失值 NaN ① 缺失值 NaN ② 空值 字符“-”.“?”等 在我们日常接触到的Python中,狭义的缺失值一般指DataFrame中的NaN.广义的话,可以分为三种. 缺失值:在Pandas中的缺失值有三种:np.nan (Not a Number) . None 和 pd.NaT(时间格式的空值,注意大小写不能错) 空值:空值在Pandas中指的是空字符串"": 最后一类是导入的Excel等文件中,原本用于表示缺失值的字符“-”.“?”等. 今天聊聊Python中查询缺

  • Python更新数据库脚本两种方法及对比介绍

    最近项目的两次版本迭代中,根据业务需求的变化,需要对数据库进行更新,两次分别使用了不同的方式进行更新. 第一种:使用python的MySQLdb模块利用原生的sql语句进行更新 import MySQLdb #主机名 HOST = '127.0.0.1' #用户名 USER = "root" #密码 PASSWD = "123456" #数据库名 DB = "db_name" # 打开数据库连接 db=MySQLdb.connect(HOST,U

  • Python 连接 MySQL 的几种方法

    尽管很多 NoSQL 数据库近几年大放异彩,但是像 MySQL 这样的关系型数据库依然是互联网的主流数据库之一,每个学 Python 的都有必要学好一门数据库,不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的几种方式,你可以在实际开发过程中根据实际情况合理选择. 1.MySQL-python MySQL-python 又叫 MySQLdb,是 Python 连接 M

  • Python处理缺失值的8种不同方法实例

    目录 前言 1. 删除有缺失值的行或列 2. 删除只有缺失值的行或列 3. 根据阈值删除行或列 4. 基于特定的列子集删除 5. 填充一个常数值 6. 填充聚合值 7. 替换为上一个或下一个值 8. 使用另一个数据框填充 总结 前言 缺失值可能是数据科学中最不受欢迎的值,然而,它们总是在身边.忽略缺失值也是不合理的,因此我们需要找到有效且适当地处理它们的方法. 在本文中,我们将介绍 8 种不同的方法来解决缺失值问题,哪种方法最适合特定情况取决于数据和任务. 让我们首先创建一个示例数据框并向其中添

  • Python查询阿里巴巴关键字排名的方法

    本文实例讲述了Python查询阿里巴巴关键字排名的方法.分享给大家供大家参考.具体如下: 这里使用python库urllib及pyquery基本东西的应用,实现阿里巴巴关键词排名的查询,其中涉及到urllib代理的设置,pyquery对html文档的解析 1. urllib 基础模块的应用,通过该类获取到url中的html文档信息,内部可以重写代理的获取方法 class ProxyScrapy(object): def __init__(self): self.proxy_robot = Pro

  • python查询sqlite数据表的方法

    本文实例讲述了python查询sqlite数据表的方法.分享给大家供大家参考.具体实现方法如下: import sqlite3 as db conn = db.connect('mytest.db') conn.row_factory = db.Row cursor = conn.cursor() cursor.execute("select * from person") rows = cursor.fetchall() for row in rows: print("%s

  • Python列表删除的三种方法代码分享

    1.使用del语句删除元素 >>> i1 = ["a",'b','c','d'] >>> del i1[0] >>> print(i1) ['b', 'c', 'd'] >>> del语句将值从列表中删除后,就再也无法访问它了. 2.使用pop()删除元素 pop()可删除列表末尾的元素,并让你能够接着使用它.食欲弹出(pop)源自这样的类比:列表就是一个栈,而删除列表末尾的元素相当于弹出栈顶元素. >>

  • Python字符串拼接的几种方法整理

    Python字符串拼接的几种方法整理 第一种 通过加号(+)的形式 print('第一种方式通过加号形式连接 :' + 'love'+'Python' + '\n') 第二种 通过逗号(,)的形式 print('第二种方式通过逗号形式连接 :' + 'love', 'Python' + '\n') 第三种 直接连接 中间有无空格均可 print('第三种方式通过直接连接形式连接 (一) :' + 'love''Python' + '\n') print('第三种方式通过直接连接形式连接 (二)

  • Python序列循环移位的3种方法推荐

    第一种方法:特点是直接.容易理解,缺点是速度慢,只能实现循环左移. def demo(lst, k): temp = lst[:] for i in range(k): temp.append(temp.pop(0)) return temp 第二种方法:特点是速度快,并且自适应循环左移(k>0)和右移(k<0),缺点是涉及到算法,不容易理解. def demo(lst, k): x = lst[:k] x.reverse() y = lst[k:] y.reverse() r = x+y r

  • 详解Python传入参数的几种方法

    Python传入参数的方法有:位置参数.默认参数.可变参数.关键字参数.和命名关键字参数.以及各种参数调用的组合 写在前面 Python唯一支持的参数传递方式是『共享传参』(call by sharing) 多数面向对象语言都采用这一模式,包括Ruby.Smalltalk和Java(Java的引用类型是这样,基本类型按值传递) 共享传参是指函数的各个形式参数获得实参中各个引用的副本:也就是说,函数内部的形参是实参的别名(alias) 这种方案的结果是,函数可能会修改作为参数传入的可变对象,但是无

随机推荐