拿到数据集后第一步该做什么?怎么判断数据质量好不好、能不能用?
王明 · 产品经理 · 发布 2026-06-25
拿到数据集别急着跑模型。第一步先读数据文档/codebook弄懂字段含义与局限,再做质量体检(缺失、异常、重复、编码一致性、类别平衡、时间/抽样偏差),按缺失机制与占比决定删还是补,全程记录清洗步骤与数据集版本/DOI 以保证可复现和规范引用。
拿到数据集后的第一步不是跑模型,而是先读懂数据:打开随附的数据文档/codebook,弄清每个字段的含义、采集与加工方法、覆盖范围、已知局限和版本号。读懂之后再做一次系统的质量体检——检查缺失值分布、异常值、重复记录、编码与格式一致性、类别是否极度不平衡、是否存在时间或抽样偏差。缺失值和异常值是删还是补,取决于缺失机制和占比,而非凭手感盲删。整个过程要把每一步清洗操作和数据集版本/DOI 记录下来,这样结果才可复现、引用才规范。
为什么不该拿到数据就直接跑模型
直接拿原始数据跑模型,是新手最常见也最昂贵的习惯。模型对脏数据没有判断力:编码错位、单位不统一、隐藏的缺失占位符(如 -999、空字符串、'NA')都会被当成真实信号学进去,得到看似漂亮却不可信的结果。业界普遍认为数据清洗和理解占整个数据工作的 70%-80%,跳过这一步省下的时间,往往会在结果无法复现、审稿被质疑数据质量时加倍偿还。先理解、再体检、后建模,是把风险前置而不是后置的正确顺序。
第一步:读数据文档 / codebook,弄清这份数据是什么
数据文档(codebook / data dictionary / README)是判断一份数据能不能用的第一道关口。在写任何代码前,应当从文档里确认五件事:字段含义与取值范围、数据是如何采集和加工的、覆盖的人群/时间/地域范围、作者已声明的已知局限,以及这份数据的版本号或发布日期。没有文档的数据集要格外警惕——含义靠猜的字段几乎一定会在分析后期反咬一口。
- 字段含义:每一列代表什么、单位是什么、取值如何编码(如 1=男 2=女,缺失如何表示)。
- 采集与加工方法:是问卷、传感器、爬取还是二手汇编;有没有经过抽样、加权、去重或脱敏。
- 覆盖范围:样本来自哪个人群、哪段时间、哪个地域,能不能外推到你的研究对象。
- 已知局限:作者自己声明的偏差、缺失、测量误差或不适用场景。
- 版本与时间:这是第几版、什么时候发布的,是否有勘误或后续修订。
第二步:做数据质量体检,看哪些指标
读懂文档后,对数据做一次量化的质量体检,逐项核对常见问题。这一步的目标不是修复,而是先把问题暴露出来、心里有数。建议按字段逐列统计,再从整表视角看结构性问题。
| 体检项 | 怎么看 | 常见信号 |
|---|
| 缺失值 | 统计每列缺失比例与缺失模式 | 某列大面积缺失、缺失集中在特定子群 |
| 异常值 | IQR 箱线图、Z-score、分位数 | 超出物理合理范围、孤立极端点、占位符当数值 |
| 重复记录 | 按主键或全行去重比对 | 同一实体多次出现、ID 重复 |
| 编码与格式一致性 | 检查日期/单位/大小写/分隔符 | 日期格式混用、单位不统一、同义类别拼写不一 |
| 类别不平衡 | 统计目标变量各类别占比 | 正负样本悬殊(如 99:1),少数类样本极少 |
| 时间/抽样偏差 | 看采样时段、来源、人群分布 | 数据只覆盖某时段或某地区,无法代表总体 |
关于异常值识别,IQR(四分位距)法和 Z-score 是两种常用且互补的工具:IQR 对偏态分布更稳健,箱线图能直观看到离群点;Z-score 假设近似正态、衡量偏离均值多少个标准差。识别出离群点不等于要删除——先判断它是录入错误、测量故障,还是真实存在的极端但有意义的观测。
缺失值和异常值:到底是删还是补
删还是补没有万能答案,但有清晰的判断原则:先看缺失/异常的机制和占比,再决定处理方式,且任何处理都要避免破坏原始分布。盲目整行删除(listwise deletion)在缺失非随机时会引入系统性偏差,盲目用均值填补则会人为压低方差、让分布更尖。
| 情形 | 倾向做法 | 理由 / 注意 |
|---|
| 缺失占比很低且像是随机缺失 | 可删或简单填补 | 对结果影响小,但仍应记录删了多少 |
| 缺失占比高 / 与其他变量相关 | 审慎填补,避免盲删 | 删除会丢信息并扭曲分布,需说明填补假设 |
| 缺失本身有含义(如未填=未发生) | 保留并新增缺失标记 | 把'缺失'当成一种信息而非噪声 |
| 异常值是录入/测量错误 | 修正或剔除 | 可还原真值则修正,无法还原再剔除 |
| 异常值是真实极端观测 | 原则上保留 | 贸然删会破坏分布、丢失真实信号 |
第三步:记录清洗步骤,保证可复现
清洗不是一次性的体力活,而是研究结果的一部分,必须可追溯。把每一步操作——删了哪些行、如何填补、怎样重编码、剔除了哪些异常值——写进脚本或清洗日志,而不是在表格里手动改改了事。可复现的清洗流程让审稿人、合作者乃至几个月后的自己都能重跑出同样的结果,也是越来越多期刊(尤其要求提交数据与代码的期刊)的硬性期待。
最后:记下数据集版本 / DOI,规范引用
用了哪个版本的数据、它有没有 DOI,直接决定研究能不能被复现和正确引用。同一数据集不同版本可能在样本量、字段甚至取值上都有差异,只写数据集名字而不写版本,等于让别人无法回到你用的那份数据。拿到数据时就把名称、版本号、发布机构、访问日期和 DOI 一并记下,投稿时按规范在数据可用性声明和参考文献里引用,是开放科学和可复现性的基本功。
没有数据文档/codebook 的数据集还能用吗?
可以用但风险高。字段含义靠猜容易出错,应优先找官方说明或原始来源补全;若始终无法确认关键字段含义和采集方法,建议在论文中明确声明局限,或另寻有文档的同类数据。
缺失值用均值填补可以吗?
均值填补简单但会压低方差、扭曲分布,仅适合缺失极少且随机的情形。缺失占比高或非随机时,应考虑更稳健的方法并明确说明填补假设,同时保留一个缺失标记列以备分析。
类别极度不平衡一定要做数据增强或重采样吗?
不一定。先看任务是否真在意少数类、评价指标是否已考虑不平衡。重采样和增强可能引入偏差或过拟合,应在验证集上比较有无处理的效果,而非默认照搬。
爬虫爬来的数据能直接用于论文吗?
需先做合规自查。涉及个人信息、受版权保护内容或违反网站条款的数据存在法律风险;公开社交媒体数据也可能涉及伦理审查与去标识化。使用前应确认来源合法、必要时脱敏,并在方法中说明。
怎么判断一份数据集靠不靠谱?
看四点:有无清晰文档与版本/DOI、采集方法是否透明、是否被本领域同行广泛引用使用、质量体检后缺失与异常是否在可接受范围。四点都过关,数据可信度通常较高。
作者:王明 —— 计算机科学硕士,全栈开发者,热衷于用技术提升科研效率。