Python 文件读写与数据清洗实操指南
本文详细介绍使用 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数据处理与清洗技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













