Python3 DataFrame缺失值的处理:判断、过滤、填充与删除

Noah
Noah
发布时间:2026-10-15| 5人浏览过
原创

本文详细介绍Python3中Pandas库处理DataFrame缺失值(NaN/None)的四种核心方法。涵盖使用isnull和notnull进行判断,通过布尔索引过滤含缺失值数据,利用fillna方法按指定策略(如ffill/bfill)或数值填充,以及使用dropna按行或列删除缺失数据。文章包含具体参数说明与代码示例,帮助开发者高效完成数据清洗工作。

一、缺失值的判断

在使用Pandas进行数据分析时,数据中常因各种原因出现缺失值NaN(Not a number)或None。例如,当两个DataFrame对象进行简单运算时,无法匹配的位置会出现缺失值NaN或None。

isnull()和notnull()方法均可用于判断数据是否为缺失值(NaN或None)。若数据为缺失值,isnull()返回True,而notnull()返回False。

df2
Out[170]: 
      A     B     C   D
a   2.0   4.0   6.0 NaN
b   6.0   8.0  10.0 NaN
c  10.0  12.0  14.0 NaN
 
df2.isnull()
Out[171]: 
       A      B      C     D
a  False  False  False  True
b  False  False  False  True
c  False  False  False  True
 
df2.notnull()
Out[172]: 
      A     B     C      D
a  True  True  True  False
b  True  True  True  False
c  True  True  True  False

二、缺失值数据的过滤

有时处理包含缺失值的数据较为简单,只需保留有数值的数据即可。

df2
Out[182]: 
      A     B     C    D
a   2.0   4.0   6.0  NaN
b   6.0   8.0  10.0  NaN
c  10.0  12.0  14.0  1.0
 
#把D列中的缺失值过滤掉
df2.D[df2.D.notnull()]
Out[183]: 
c    1.0
Name: D, dtype: float64

三、缺失值数据的填充

在处理数据时,我们可能希望用实际值替代缺失值。Pandas提供了相应的函数:DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)。

参数value用于指定在缺失值处填充的值,可以是数值或字符串;method指定填充方式,默认为None,也可取ffill、pad、bfill或backfill。其中ffill/pad使用行或列方向上的上一个观测值填充缺失值,bfill/backfill使用下一个观测值填充;axis与method配合使用,指定行(axis=1)或列(axis=0)的方向;当limit=None时,会填充连续的缺失值,若指定数值如limit=2,则仅依次填充连续NaN值的指定个数(如2个);若inplace=False,则不变更原DataFrame,若inplace=True,则会改变原DataFrame。

import pandas as pd
import numpy as np
h2h2df=pd.DataFrame(np.arange(1,21).reshape(5,4),index=list('abcde'),columns=list("ABCD"))
h2df.loc['c','A']=np.nan
h2df.loc['b':'d','C']=np.nan
h2df
Out[192]: 
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   NaN   8
c   NaN  10   NaN  12
d  13.0  14   NaN  16
e  17.0  18  19.0  20
h2df.fillna(0)
Out[193]: 
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   0.0   8
c   0.0  10   0.0  12
d  13.0  14   0.0  16
e  17.0  18  19.0  20
h2df.fillna(method='ffill')
Out[194]: 
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   3.0   8
c   5.0  10   3.0  12
d  13.0  14   3.0  16
e  17.0  18  19.0  20
h2df.fillna(method='pad')
Out[197]: 
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   3.0   8
c   5.0  10   3.0  12
d  13.0  14   3.0  16
e  17.0  18  19.0  20
h2df.fillna(method='backfill',axis=1)
Out[196]: 
      A     B     C     D
a   1.0   2.0   3.0   4.0
b   5.0   6.0   8.0   8.0
c  10.0  10.0  12.0  12.0
d  13.0  14.0  16.0  16.0
e  17.0  18.0  19.0  20.0
h2df.fillna(method='ffill',limit=2)
Out[198]: 
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   3.0   8
c   5.0  10   3.0  12
d  13.0  14   NaN  16
e  17.0  18  19.0  20

四、缺失值的删除

Pandas提供了对包含缺失值的数据集进行行列删除的操作:

DataFrame.dropna(axis=0, how='any', thresh=None)

axis=0表示删除包含缺失值的行,axis=1表示删除包含缺失值的列,默认为0;how='any'表示只要有一个缺失值就删除该行(列),how='all'表示仅当所有元素都为缺失值时才删除该行(列),how默认取值为any;thresh默认为None。当thresh=5时,表示仅当某行(列)缺失值的数量大于或等于5时才删除该行(列)。

df
Out[199]: 
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   NaN   8
c   NaN  10   NaN  12
d  13.0  14   NaN  16
e  17.0  18  19.0  20
 
df.dropna(axis=0)
Out[200]: 
      A   B     C   D
a   1.0   2   3.0   4
e  17.0  18  19.0  20
 
df.dropna(axis=1)
Out[201]: 
    B   D
a   2   4
b   6   8
c  10  12
d  14  16
e  18  20

到此这篇关于Python3 DataFrame缺失值的处理的文章就介绍到这了,更多相关Python3 DataFrame缺失值内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。