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实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学
    2022-01-01
  • Python中read,readline和readlines的区别案例详解

    Python中read,readline和readlines的区别案例详解

    这篇文章主要介绍了Python中read,readline和readlines的区别案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 使用pycharm运行flask应用程序的详细教程

    使用pycharm运行flask应用程序的详细教程

    这篇文章主要介绍了使用pycharm运行flask应用程序,首先大家需要使用pycharm创建你的第一个app,接下来就开始配置pycharm,需要的朋友可以参考下
    2021-06-06
  • python冒泡排序简单实现方法

    python冒泡排序简单实现方法

    这篇文章主要介绍了python冒泡排序简单实现方法,实例分析了Python冒泡排序的简单实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python执行PostgreSQL数据库的SQL脚本详解

    Python执行PostgreSQL数据库的SQL脚本详解

    Psycopg2是一个用于Python编程语言的第三方库,用于访问PostgreSQL数据库系统,可以轻松地在Python程序中进行数据库操作,下面小编就来和大家详细介绍一下它吧
    2025-05-05
  • 基于 Python实现云服务器的CDN域名远程鉴权配置

    基于 Python实现云服务器的CDN域名远程鉴权配置

    这篇文章主要介绍了基于 Python实现云服务器的CDN域名远程鉴权配置,文章内容技术详细,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • 解读Python脚本的常见参数获取和处理方式

    解读Python脚本的常见参数获取和处理方式

    这篇文章主要介绍了Python脚本的常见参数获取和处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Python调用讯飞语音合成API接口来实现文字转语音

    Python调用讯飞语音合成API接口来实现文字转语音

    这篇文章主要为大家介绍了Python调用讯飞语音合成API接口来实现文字转语音方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 趣味Python实战练习之自动更换桌面壁纸脚本附源码

    趣味Python实战练习之自动更换桌面壁纸脚本附源码

    读万卷书不如行万里路,学的扎不扎实要通过实战才能看出来,本篇文章手把手带你编写一个自动更换桌面壁纸的脚本,代码简洁而且短,相信你一定看得懂,大家可以在过程中查缺补漏,看看自己掌握程度怎么样
    2021-10-10
  • Python中的getopt模块用法小结

    Python中的getopt模块用法小结

    getopt.getopt()函数是 Python中用于解析命令行参数的标准库函数, 该函数可以从命令行中提取选项和参数,并对它们进行处理,本文详细介绍了Python的getopt模块,包括其getopt.getopt函数的用法、参数说明,,感兴趣的朋友一起看看吧
    2025-04-04

最新评论