数据清洗基础:质量维度与流程概览

各位同学,欢迎来到第二章。上一章我们聊了非结构化数据的“乱象”,这一章咱们得把“清洗”这件事本身掰开揉碎了讲清楚。

数据清洗不是瞎折腾,它背后有一套衡量标准。我刚开始做数据项目时,也以为清洗就是“把空值填上、把格式统一一下”。后来被坑过几次才明白——没有质量维度,你根本不知道要洗到什么程度。

数据质量四大维度

数据质量,说白了就是数据“好不好用”。我习惯从四个维度去衡量,你想想看,是不是每个项目都逃不开这四点:

维度 定义 非结构化场景举例
准确性 数据是否真实反映客观事实 OCR识别出的身份证号是否与原图一致
完整性 数据是否存在缺失或空值 PDF中某页表格的单元格内容为空
一致性 同一数据在不同来源或格式下是否统一 “北京市”和“北京”是否被当作同一个城市
时效性 数据是否在有效时间范围内 新闻文本的发布时间是否超过业务截止日期

我的经验:这四个维度不是孤立的。我在处理一批客户邮件时,发现“完整性”问题往往掩盖了“准确性”问题——字段缺失可能是因为上游系统根本没采集到正确值。所以,清洗时别只盯着一个维度看。

准确性

准确性是数据清洗的底线。数据错了,后面所有分析都是白搭。我记得有一次做电商评论清洗,一条评论里“好评”两个字被OCR识别成了“好坪”,这就是典型的准确性问题。

完整性

完整性不是要求所有字段都必须有值,而是“业务需要的字段不能缺”。比如,处理简历PDF时,如果“工作年限”字段为空,那后续的筛选模型就没法跑。

一致性

一致性最容易被忽略。我遇到过最头疼的情况是:同一个客户,在CRM系统里叫“张三”,在邮件附件里叫“Zhang San”,在聊天记录里叫“三哥”。你说这是同一个人吗?清洗时就得把这些统一起来。

时效性

时效性在非结构化数据里特别重要。新闻、社交媒体帖子、传感器日志——这些数据过了时间窗口就没价值了。我曾经处理一批过期的股票评论数据,模型训练出来预测准确率还不如抛硬币。

清洗流程概览

数据清洗不是一锤子买卖,它是个流程。我个人习惯把它分成五个阶段,你照着这个流程走,基本不会漏掉关键步骤。

  1. 数据探查——先看看数据长什么样。用df.info()、df.describe()摸个底。
  2. 问题识别——根据四大维度,标记出问题数据。比如空值、重复、异常值。
  3. 清洗策略制定——针对不同问题,决定是删除、填充、还是转换。
  4. 执行清洗——写代码动手洗。这一步最耗时。
  5. 验证与迭代——清洗完再检查一遍,确保没引入新问题。

避坑指南:我曾经跳过“数据探查”这一步,直接上手清洗。结果洗了半天才发现,数据源已经换了格式,我洗的全是垃圾。记住:先看再洗,别急着动手。

数据清洗五阶段流程 数据探查 问题识别 清洗策略制定 执行清洗 验证迭代 发现问题后返回重新探查 💡 关键提醒 每个阶段都可能需要回溯。比如执行清洗时发现新问题,就得回到“问题识别”甚至“数据探查”。 别想着一步到位,清洗是个迭代过程。

Python环境准备

工欲善其事,必先利其器。咱们这门课主要用Python,下面这几个库是清洗非结构化数据的“四大金刚”。

库名 用途 安装命令
Pandas 结构化表格数据处理,CSV/Excel/JSON清洗 pip install pandas
NumPy 数值计算,处理缺失值、数组操作 pip install numpy
NLTK 自然语言处理,文本分词、去停用词 pip install nltk
OpenCV 图像处理,OCR预处理、图片去噪 pip install opencv-python

注意:安装NLTK后,还需要手动下载语料库。在Python里执行 nltk.download('punkt') 和 nltk.download('stopwords')。我第一次用NLTK时忘了这步,结果分词函数一直报错,折腾了半小时才发现。

快速验证环境

装完库后,我习惯跑一个简单的验证脚本,确保所有库都能正常导入:

import pandas as pd
import numpy as np
import nltk
import cv2

print("Pandas version:", pd.__version__)
print("NumPy version:", np.__version__)
print("NLTK version:", nltk.__version__)
print("OpenCV version:", cv2.__version__)

# 下载NLTK必要数据(首次运行)
nltk.download('punkt', quiet=True)
nltk.download('stopwords', quiet=True)

print("✅ 环境准备就绪!")

我的习惯:我会把这个脚本保存为 check_env.py,每次新建项目时先跑一遍。省得写到一半才发现某个库没装,打断思路。

关于版本

Python版本建议用3.8以上。Pandas 1.3+、NumPy 1.21+、NLTK 3.6+、OpenCV 4.5+。这些版本我都在项目中验证过,兼容性没问题。