当前位置:首页>python>Python:Pandas 数据类型强制转换 + 脏数据类型异常批量修复

Python:Pandas 数据类型强制转换 + 脏数据类型异常批量修复

  • 2026-10-11 06:07:11
Python:Pandas 数据类型强制转换 + 脏数据类型异常批量修复
业务导入数据常出现数字存文本、日期乱码、浮点精度丢失、混合类型字段,类型错乱会导致筛选、计算、聚合全部报错,本篇覆盖全场景类型清洗方案。
场景:订单表金额、数量字段混入逗号、中文、空字符串,日期格式不统一,批量清洗并标准化字段数据类型,过滤无法转换的脏数据并单独标记。核心知识点:astype基础转换、pd.to_numeric容错转换、pd.to_datetime日期统一解析、errors参数异常处理、新增脏数据标记列。

① 字段含义说明

② 生成测试脏数据

import pandas as pdraw_data = [    ["10001", "1299", "5", "2026/06/01", "旗舰店A"],    ["10002", "1,599", "十", "2026-06-02", "分店B"],    ["10003", "无效", "3", "", "分店C"],    ["10004", "2399.5", "8", "2026/06/03", "旗舰店A"],    ["10005", "", "6", "2026-06-04", "分店B"]]df = pd.DataFrame(raw_data, columns=["order_id","total_amt","buy_num","create_dt","shop"])df.to_excel("dirty_type_data.xlsx", index=False)print("含类型脏数据测试文件生成完成")
查看数据情况

③ 核心清洗代码

import pandas as pddf = pd.read_excel("dirty_type_data.xlsx")# 1. 金额字段:去除千分位逗号,容错转为浮点,无法转换填充NaN并标记脏数据df["clean_amt"] = pd.to_numeric(df["total_amt"].str.replace(",",""), errors="coerce")df["amt_is_dirty"] = df["clean_amt"].isna().astype(int)# 2. 数量字段:强制转数字,文字类脏值置空df["clean_num"] = pd.to_numeric(df["buy_num"], errors="coerce")df["num_is_dirty"] = df["clean_num"].isna().astype(int)# 3. 日期字段:统一解析为标准datetime格式,无法识别填充NaTdf["clean_dt"] = pd.to_datetime(df["create_dt"], errors="coerce")df["dt_is_dirty"] = df["clean_dt"].isna().astype(int)print("==== 类型清洗后完整数据 ====")print(df[["order_id","clean_amt","amt_is_dirty","clean_num","num_is_dirty","clean_dt"]])

结果展示

总结

使用to_numeric/to_datetime搭配errors="coerce"是处理混杂脏数据的标准方案,相比astype具备容错能力;同步新增脏数据标记列,可区分有效数据与异常数据,便于后续人工复核,是上游数据接入必做清洗步骤。

最新文章

随机文章