ZhangZhihui's Blog  

✅ 一、数据清洗的主要内容

下面是数据清洗时需要特别注意的关键方面,结合常见问题和建议处理方法:

1. 去除字符串首尾空格

  • 问题: 字符串中包含意外的空格、制表符(\t)或换行符(\n)。

  • 处理:

    df['列名'] = df['列名'].str.strip()

    可以配合 .str.replace() 去掉中间的多余空格:

    df['列名'] = df['列名'].str.replace(r'\s+', ' ', regex=True)

2. 统一数据格式(标准化)

  • 日期格式统一(如 "2025/08/08""08-08-2025"

  • 数字格式统一(千分位、货币符号等)

  • 布尔值统一(如 "Yes"/"No"True/False

  • 字符统一大小写:

    df['列名'] = df['列名'].str.lower() # 或 .str.upper()

3. 处理缺失值(NaN)

  • 替换为空、均值、中位数、众数、插值等

  • 删除缺失严重的列或行

    df.dropna() # 删除含NaN的行 df.fillna(0) # 用0替代NaN

4. 去除重复值

  • 基于某列或整行去重:

    df.drop_duplicates()

5. 处理异常值(Outliers)

  • 方法:

    • Z-score 标准化检测异常

    • IQR(四分位)方法

    • 业务规则过滤(如年龄不能为负,销售额不可能超过上限)


6. 数据类型转换

  • 将字段转换为适当类型:

    df['金额'] = df['金额'].astype(float) df['日期'] = pd.to_datetime(df['日期'])

7. 拼写检查与分类统一

  • 拼写错误或分类不一致,如 "USA""Usa""United States"

  • 可以使用:

    • 关键词匹配/映射表(dictionary)

    • 模糊匹配库如 fuzzywuzzyRapidFuzz


8. 非法字符与乱码清理

  • 去掉不可见字符、特殊符号、HTML标签等:

    df['列'] = df['列'].str.replace(r'[^\x00-\x7F]+', '', regex=True) # 清除非ASCII字符

9. 多值字段拆分

  • 比如字段中用“;”或“,”分隔的多值,需要拆分成多个列或转为列表:

    df['tags'] = df['tags'].str.split(';')

10. 逻辑一致性检查

  • 比如:

    • 出生日期不能晚于注册日期

    • 金额字段不能为负

    • 男性用户不应填写“怀孕”字段等


✅ 实用建议

  • 建立清洗规则文档,明确每列的数据标准。

  • 保存原始数据副本,避免无法还原。

  • 处理前可视化:直方图、箱型图、唯一值统计,有助于发现问题。

  • 可用 Python + pandas、PySpark、R、Power BI、Excel 等工具处理。

 

posted on 2025-08-08 21:09  ZhangZhihuiAAA  阅读(79)  评论(0)    收藏  举报