Python 文件读写与数据清洗实操指南

Jasper
Jasper
发布时间:2026-10-12| 2人浏览过
原创

本文详细介绍使用 Python 的 pandas 库进行 CSV 与 Excel 文件的读取及保存方法,系统讲解空值筛选、行列删除、索引重置与缺失统计等核心清洗操作。通过明确关键参数设置与标准化代码示例,协助开发者高效完成数据预处理与质量校验流程,确保分析基础稳定可靠。

准备环境与核心对象

在启动清洗任务前,需确保工作区已安装 pandas 依赖库。全部读写与变换操作均基于 DataFrame 容器展开。涉及覆盖写入或原地修改(如设置 inplace=True)时,强烈建议先备份原始文件或创建副本,防止误操作导致信息不可逆丢失。

第一步:正确读取与导出 CSV 文件

目的:将外部表格安全加载为 DataFrame,并规范处理字符编码。
入口:终端脚本或 Jupyter Notebook 单元格。
动作:调用 pd.read_csv() 解析文件,完成转换后使用 to_csv() 落盘。

# 导入核心库
import pandas as pd

# 推荐路径:直接读取 CSV,显式声明编码防乱码
df = pd.read_csv("test.csv", encoding="utf-8")

# 备选路径:使用原生文件流进行轻量文本替换(返回字符串列表)
with open("test.csv", encoding="utf-8") as f:
    raw_lines = f.readlines()
    clean_lines = [line.replace("阴性","0").replace("00.","0.") for line in raw_lines]

# 导出清洗结果,index=False 隐藏默认行索引
df.to_csv("df_new.csv", encoding="utf-8", index=False)

第二步:批量读取与写入 Excel 表格

目的:针对包含多个工作表(Sheet)的 XLSX 文件定向提取数据,并导出标准化报表。
入口:代码运行环境。
动作:利用 sheet_name 参数锁定目标 Sheet,执行完毕后调用 to_excel()。

# 读取指定名称的 Sheet 页
df_excel = pd.read_excel("测试.xlsx", sheet_name="test")

# 读取第一个 Sheet(省略参数时的默认行为)
# df_excel = pd.read_excel(r"测试.xlsx")

# 写回新文件,同步关闭索引显示
df_excel.to_excel("处理后的数据.xlsx", index=False)

核心数据清洗操作

第三步:精准删除空值与冗余列行

目的:剔除不符合建模或统计规范的空白记录与废弃字段。
参数对照:axis=0 作用于行,axis=1 作用于列;how='all' 全空才删,how='any' 含空即删;subset 划定检测范围。

# 1. 空值过滤 (Drop NA)
df_all_empty = df.dropna(axis=0, how='all')              # 整行全为空则移除
df_val_notnull = df[df['价格'].notna()]                   # 保留价格列非空的记录
df_sub_any = df.dropna(how='any', subset=['A','B','C'])   # 指定列中任一为空则删整行

# 2. 剔除无用列
del df['sample_1']                                        # 就地删除,仅支持单列
df_drop_multi = df.drop(['sample_1','sample_2'], axis=1)  # 返回列表,支持多列
# 3. 剔除无用行
df.drop(['label_1','label_2'], inplace=True)              # 按索引标签删除
df.drop(df.index[[0, 2, 4]], inplace=True)                # 按位置切片删除
df_filtered = df[df.index % 2 == 0]                       # 逻辑掩码过滤偶数行

第四步:重置索引与切换数据轴

目的:修复因连续删除导致的断裂序列,或将特定字段提升为查询主轴。
动作:借助 reset_index() 恢复自然数索引,配合 set_index() 重构行维度。

# 重建连续索引
df_re = df.reset_index(drop=True)                         # drop=True 彻底丢弃旧索引
# df_keep_old = df.reset_index()                        # 默认 False,旧索引会转为新数据列

# 提升某列作为主键索引
df_pivot = df.set_index('column_name').head()

第五步:统计缺失率并排序排查

目的:量化评估数据集健康度,按残缺程度降序排列,快速识别需优先处理的薄弱特征。
参数对照:len(df) 获取总样本数,axis=1 跨列汇总。

# 基础缺失频次统计
miss_col_count = df.isnull().sum()                      # 逐列统计
miss_row_count = df.isnull().sum(axis=1)                # 逐行统计

# 换算缺失占比
rate_col = miss_col_count / len(df)
rate_row = miss_row_count / df.shape[1]

# 按缺失严重程度降序排列,辅助制定清洗优先级
ranked_issues = rate_col.sort_values(ascending=False)

完成判断与注意事项

确认数据管道跑通后,可通过 df.head() 观察头部结构与 df.info() 核对类型映射。若启用原地写入或覆盖导出,务必二次校验文件编码一致性与字段对齐状态。常规工作流中,建议将清洗脚本模块化,并通过版本控制追踪中间产物,以降低人工干预带来的偏差风险。

以上就是Python 文件读写与数据清洗核心操作的详细内容,更多关于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 算法库。