Python利用Pandas按条件区间筛选并清理Excel数据

蓝鲸
蓝鲸
发布时间:2026-10-11| 3人浏览过
原创

本文详细介绍如何使用Python的Pandas库读取Excel或CSV表格,通过设定各列数据的数值区间进行条件过滤。演示多条件独立筛选与批量合并筛选的代码实现,快速剔除不符合范围的异常样本行,保留核心数据并导出为新文件。

明确数据清洗目标

在实际数据分析与机器学习预处理中,原始表格往往包含大量超出合理物理范围或采集错误的记录。我们的核心任务是对特定属性列(如inf、NDVI等)设定允许的上下限,自动筛选出全部落在指定区间内的完整行,丢弃任何包含越界数值的样本,最终输出一份干净的结构化文件。

包含多列属性的原始数据表格示例
原始表格包含大量样本行与不同维度的属性列,需按列设定阈值进行整行过滤。

准备环境与基础配置

操作前请确保已安装pandas库。由于直接覆盖或修改源数据存在丢失风险,建议在运行筛选脚本前手动备份原始文件。配置好原始数据路径与目标输出路径后,即可进入逻辑编写阶段。

第1步:导入依赖与读取数据

该步骤的目的是加载文件并将表格转化为可操作的二维数据结构。pandas同时支持.csv与.xlsx格式,调用对应读取函数即可一次性载入全表。

# -*- coding: utf-8 -*-
import pandas as pd

# 定义原始数据与目标保存路径(请以实际目录为准)
original_file = "E:/your_path/source_data.csv"
result_file = "E:/your_path/cleaned_data.csv"

# 读取表格至DataFrame对象
df = pd.read_csv(original_file)

第2步:应用区间筛选逻辑

筛选的核心是根据各列阈值构造布尔掩码。此处提供两种等效的实现方式:链式逐列过滤适合逐步调试,单次复合逻辑则更适合生产环境直接输出。

方法A:链式连续筛选。每次使用逻辑与运算符&拼接上下限条件,直接对df对象赋值更新。此写法逻辑直观,便于排查某一列是否误删正常数据。

# 保留 inf 列在 -0.2 至 18 之间的数据
df = df[(df["inf"] >= -0.2) & (df["inf"] <= 18)]
# 保留 NDVI 列在 -1 至 1 之间的数据
df = df[(df["NDVI"] >= -1) & (df["NDVI"] <= 1)]
# 依次类推其他字段,直至所有属性校验完毕
df = df[(df["soil"] >= 0)]

方法B:单行复合筛选。将所有条件集中在一次索引操作中,提升执行效率。注意条件间需用括号严格分组,避免优先级错误。

result_df = result_df[
    (result_df["blue"] > 0) & (result_df["blue"] <= 1) &
    (result_df["green"] > 0) & (result_df["green"] <= 1) &
    (result_df["red"] > 0) & (result_df["red"] <= 1) &
    (result_df["inf"] > 0) & (result_df["inf"] <= 1) &
    (result_df["NDVI"] > -1) & (result_df["NDVI"] < 1) &
    (result_df["soil"] >= 0)
    # 其他字段条件继续在此追加
]

第3步:导出清洗结果

确认筛选逻辑无误后,将过滤后的DataFrame写入新文件。index=False参数可避免保存默认的整数索引列,保持导出表格整洁。

df.to_csv(result_file, index=False)

完成判断与排错提示

运行成功后,打开result_file检查行数变化与关键列数值分布是否符合预期。若发现数据被过度清洗或脚本报错,请注意以下关键点:布尔运算中不可用Python关键字and替换符号&;若某列存在空值NaN,比较运算会返回False导致该行被意外丢弃,此时需先使用df.fillna()填补或使用df.dropna()移除缺失行;长路径中的反斜杠建议统一改用正斜杠/或原始字符串r"..."以避免转义冲突。

简要总结

通过设定明确的数值边界并利用Pandas的高效索引机制,可以自动化完成复杂表格的区间过滤工作。上述脚本结构清晰,参数可直接替换为业务指标,大幅降低人工排查异常样本的时间成本。

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

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