Pandas数据缺失处理:NaN检测、过滤与填充实操

慢慢来
慢慢来
发布时间:2026-10-11| 2人浏览过
原创

在数据分析实践中,缺失值常以 NaN 或误导性零值形式出现。本文梳理 Pandas 缺失数据检测机制,详细演示按列过滤、整行剔除及均值/中值填充的具体代码,并说明如何将无效零统一转码为 NaN,确保聚合运算不受干扰。

一、检测与识别 NaN 缺失值

Pandas 中的缺失值默认以 NaN 表示。在处理前,首先需要确认特定列是否存在此类数据。可通过 isnull() 结合 any() 方法快速判断:

has_nan = df['age'].isnull().any()
print(has_nan)
控制台输出布尔值显示某列存在空值
执行 isnull().any() 后返回 True 表示该列包含 NaN 缺失值

二、针对 NaN 数据的清理策略

发现缺失值后,可根据业务需求选择保留有效样本或删除不完整记录。以下以 original_publication_year 列为示例进行操作。

第1步:按单列条件过滤数据

目的:仅移除指定列含有 NaN 的行,生成纯净子集 DataFrame。

入口与动作:在 DataFrame 对象上直接使用布尔索引,配合 pd.notnull() 对目标列执行有效性校验并返回筛选结果。

df2 = df[pd.notnull(df["original_publication_year"])]

重要参数与完成状态:无需额外参数,执行后生成新对象 df2。通过打印 df2.shape 或比对行列数变化,可直观确认所有原 original_publication_year 含空值的记录已被剔除。

第2步:直接删除含缺失值的行

目的:一次性清除 DataFrame 中包含任何 NaN 的行。

入口与动作:调用 DataFrame 内置的 dropna() 方法遍历行数据进行拦截。

df.dropna(axis=0, how='any', inplace=False)

重要参数与完成状态:axis=0 指定沿行方向操作;how='any' 代表只要行内存在至少一个 NaN 即删除,若改为 'all' 则需全为空才删;inplace=True 可原地覆盖原表。建议操作前先备份 DataFrame,完成后检查总行数是否下降至预期阈值。

第3步:使用统计值或常数填充

目的:在保留全部样本的前提下,用合理数值替代空白以保证后续建模或计算连贯。

入口与动作:定位到目标列后,调用 fillna() 传入预设的标量或动态计算序列。

# 计算全局均值并填充
mean_val = df["original_publication_year"].mean()
df["original_publication_year"] = df["original_publication_year"].fillna(mean_val)

# 单列独立填充示例(均值 / 中值 / 固定值)
t["col"] = t["col"].fillna(t["col"].mean())
t["col"] = t["col"].fillna(t["col"].median())
t["col"] = t["col"].fillna(0)
fillna方法填充均值后的数据表格对比
fillna 替换前后的单元格数据变化对照
过滤掉NaN行后的干净数据集显示
应用 notnull 过滤后呈现的无空缺数据预览

三、将无效零值作为缺失值处理

在实际收集中,部分字段会用 0 代替未填写的状态。由于 0 会干扰均值、方差等聚合计算(NaN 会自动被忽略),需先将其转为标准缺失标识:

t[t == 0] = np.nan
将0转换为NaN后的数据结构示意
转换后即可无缝调用前述 dropna 或 fillna 流程

完成类型统一后,直接套用第一部分的过滤、删除或填充逻辑即可。操作完毕后务必运行 .describe() 或再次检查 .isnull().sum() 验证清洗效果。

以上就是 Pandas 数据缺失处理的详细内容,更多关于 Python 数据分析清洗的资料请关注本站其它相关文章!

相关标签:

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

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 算法库。