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"]])