pandas中数据缺失值的检测,统计与处理教学

 更新时间:2026年04月16日 09:11:15   作者:一位代码  
数据缺失指的是数据中的某个或某些特征不完整,即由于各种原因导致数据记录中某些列的值空缺,本文整理了pandas 中常见的数据缺失值的检测、统计与处理方法,希望对大家有所帮助

前言

数据缺失:指的是数据中的某个或某些特征不完整,即由于各种原因导致数据记录中某些列的值空缺。

不同的数据存储或环境对于缺失值的表现结果不同,例如,数据库中为 Null,python 返回 None,pandas 或 Numpy 则是 NaN

缺失值也不同于空字符串,空字符串是有实体的,为字符串类型;而缺失值是没有实体的,没有数据类型。

pandas 中常见的数据缺失值的检测、统计与处理方法,如下。

一、缺失值的检测与统计

定量:了解数据中那些字段有缺失,缺失比例如何。

pandas 提供识别缺失值的方法 isnull、识别非缺失值的方法 notnull ,返回值为布尔值(False或True)。以下面读取数据的结果为示例:

import pandas as pd

df =pd.read_excel('sass.xlsx') # 读取数据
print(df)

缺失值的检测与统计

查看每列是否有缺失值

df.isnull.any():True 表示有缺失,False 表示没有缺失。

print('每列是否存在缺失值:\n', df.isnull().any()) # True表示有缺失,False表示无缺失

查看每列是否有缺失值

显示数据缺失情况、位置

df.isnull():True 表示有缺失,False 表示没有缺失。

print('数据缺失值查看:\n', df.isnull())  # True表示缺失,False表示未缺失

显示数据缺失情况、位置

统计每列缺失值个数

sum() 函数结合 isnull、notnull,可查看数据中缺失值的分布以及数据中一共有多少个缺失值。

print('每列数据缺失的个数:\n', df.isnull().sum())

统计每列缺失值个数

注:notnull 用法一样,只是代表意思相反,表示未缺失值情况。

二、缺失值的处理

直接删除缺失值(删除法)

这种方法简单明了,直接删除带有缺失值的行记录(整行删除)或者列字段(整列删除),但是这种方法会消减数据特征,在很多情况下是不科学的,需要根据具体情况来考虑是否删除。

pandas 提供了 dropna 方法来删除缺失值,语法:

DataFrame.dropna(self,axis=0,how='any',thresh=None,subset=None,inplace=False)
参数释义
axis接收0或1,表示轴向,0表示行,1表示列。默认为0
how接收特定string,表示删除形式。取值为“any”,表示只要有缺失值就执行删除操作,取值为“all”,表示当且仅当全部为缺失值时才执行删除操作。默认为“any”
subset接收array,表示根据去重的行/列条件。默认为None,所有行/列
inplace接收布尔值,代表操作是否对原数据生效,默认为False

以原始数据(df1)为例:

直接删除缺失值(删除法)

实例1:删除存在缺失值(NaN)的所有列

df2 =df1.dropna(axis=1)
print('删除存在缺失值的所有列后:\n', df2)

直接删除缺失值(删除法)

实例2:删除特定字段存在缺失值(NaN)的行。

如:删除'Protein'或 'CHO'字段存在缺失值(NaN)的行。

df3 = df1.dropna(subset=['Protein', 'CHO'])
print('删除特定字段为空的行:\n', df3)

直接删除缺失值(删除法)

替换补齐缺失值

相对于直接删除法而言,补齐是更加常用的缺失值处理方法。

如果缺失值所在特征(列)为数值型,通常利用均值、中位数、众数等描述其集中趋势的统计量来替换补齐缺失值;

如果缺失值所在特征(列)为类别型,选择使用类别众数来替换补齐。

当然根据实际情况,可选择随机法、特殊值法、模型法等来替换补齐。

Pandas 提供了缺失值替换的方法 fillna,语法:

DataFrame.fillna(value=None,method=None,axis=1,inplace=False,limit=None)
参数释义
value接收dict、DataFrame等类型数据,表示用来替换缺失值的值。无默认值
method接收特定string:(1)取值为“backfill”或“bfill”,表示使用下一个非缺失值来填补缺失值。(2)取值为“pad”或“ffill”,表示使用上一个非缺失值来填补缺失值。默认为None
axis接收0或1,表示轴向。默认为1
inplace接收布尔值,代表操作是否对原数据生效,默认为False
limit接收int,表示填补缺失值个数上限,超过则不进行填补。默认为None

以上面数据(df1)为例,将所有缺失值(NaN)填充为0:

df4 = df1.fillna(value=0)
print('将所有缺失值填充为0:\n', df4)

替换补齐缺失值

注:根据实际需要,为缺失数据填充合理的值,方便后面数据的分析与建模,这里全部填充为0,只是作为一个方法举例。

以上就是pandas中数据缺失值的检测,统计与处理教学的详细内容,更多关于pandas数据缺失值处理的资料请关注脚本之家其它相关文章!

相关文章

  • python必学知识之文件操作(建议收藏)

    python必学知识之文件操作(建议收藏)

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。下面这篇文章主要给大家介绍了关于python必学知识之文件操作的相关资料,需要的朋友可以参考下
    2021-05-05
  • Python的Matplotlib库应用实例超详细教程

    Python的Matplotlib库应用实例超详细教程

    这篇文章主要介绍了Python的Matplotlib库应用的相关资料,Matplotlib是一个强大的Python数据可视化库,支持绘制2D和3D图像,它提供了简单易用的API,广泛应用于数据分析和科学研究,需要的朋友可以参考下
    2025-01-01
  • 使用wxPython创建一个文件夹结构生成器

    使用wxPython创建一个文件夹结构生成器

    这篇文章主要为大家详细介绍了如何利用 wxPython 来创建一个文件夹结构生成器,帮助大家自动化地创建文件夹和文件结构,有需要的可以了解下
    2024-11-11
  • Python3 利用requests 库进行post携带账号密码请求数据的方法

    Python3 利用requests 库进行post携带账号密码请求数据的方法

    今天小编就为大家分享一篇Python3 利用requests 库进行post携带账号密码请求数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • windows上安装Anaconda和python的教程详解

    windows上安装Anaconda和python的教程详解

    本文主要给大家介绍windows上安装Anaconda和python的教程详解,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-03-03
  • python中对_init_的理解及实例解析

    python中对_init_的理解及实例解析

    这篇文章主要介绍了python中对_init_的理解及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 用Python画圣诞树代码示例

    用Python画圣诞树代码示例

    大家好,本篇文章主要讲的是用Python画圣诞树代码示例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Python填充任意颜色,不同算法时间差异分析说明

    Python填充任意颜色,不同算法时间差异分析说明

    这篇文章主要介绍了Python填充任意颜色,不同算法时间差异分析说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 手把手带你用python爬取小姐姐私房照

    手把手带你用python爬取小姐姐私房照

    这篇文章主要介绍了用python如何爬取小姐姐私房照,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • OpenCV图像的几何变换处理方法详解

    OpenCV图像的几何变换处理方法详解

    这篇文章主要给大家介绍了关于OpenCV图像的几何变换处理的相关资料,图像的几何变换是指将一幅图像映射到另一幅图像内,有缩放、翻转、仿射变换、透视、重映射等操作,需要的朋友可以参考下
    2024-03-03

最新评论