数据预处理包含哪些步骤?按企业分析项目的真实依赖顺序,可以拆成八步:定任务与口径、数据概览、字段统一、数据清洗、数据集成、数据变换、数据规约、验收交付。每一步都有明确产出,前一步没做稳,后一步很容易返工。
步骤数量在不同资料里不一样。经典数据挖掘教材把预处理归为数据清洗、数据集成、数据变换、数据规约四类,讲的是问题类型;CRISP-DM 把数据准备拆成选择、清洗、构造、集成、格式化五项任务,讲的是项目动作。企业分析还要在前面补任务口径,在后面补验收,所以实际执行会更细。
dbt Labs 2024 年的分析工程调查中,456 名数据从业者里有 55% 把维护或整理数据集列为最耗时的任务,57% 把数据质量列为准备分析数据时的主要挑战之一。预处理做不稳,后面的分析和决策都会被拖慢。
数据预处理包含哪些步骤
把原始数据变成可分析数据,建议按下面的顺序推进。顺序不是形式,它决定了哪些错误会被提前拦住。
| 步骤 | 要解决的问题 | 主要产出 | 通过标准 |
|---|---|---|---|
| 1 定任务与口径 | 这次分析回答什么,指标怎么算 | 任务卡、指标定义 | 两人按同一份定义取数能对上 |
| 2 数据概览 | 数据范围、粒度、质量问题在哪 | 数据质量报告 | 关键问题有影响评估和处理优先级 |
| 3 字段统一 | 字段含义、类型、时区是否一致 | 字段字典、类型映射 | 同一对象在不同表中能正确关联 |
| 4 数据清洗 | 缺失、重复、异常、不一致 | 清洗日志、清洗后数据 | 每条规则可追溯,处理可回退 |
| 5 数据集成 | 多表关联后粒度是否保持 | 关联宽表、核对记录 | 行数、命中率、金额对账通过 |
| 6 数据变换 | 指标和特征是否按统一公式生成 | 变换说明、可复算脚本 | 公式、参数、版本固定 |
| 7 数据规约 | 数据量和维度是否适合计算 | 规约后的数据集 | 分析结果与全量结果一致或差异可解释 |
| 8 验收交付 | 数据能否被别人复现使用 | 数据集、字段字典、质量记录 | 验收清单逐项通过 |
第 7 步按需做。一次月度经营分析通常不需要降维;建模前特征过多、全量数据跑不动时,才需要规约。
第 1 步:定分析任务和指标口径
先写清要回答的问题,再打开数据表。 以付费转化分析为例,至少要定义五件事:转化事件是支付成功还是创建订单;分母是新注册用户、活跃用户还是进入支付页的用户;统计窗口是自然日、7 日还是滚动 30 日;退款、测试订单、渠道补单算不算;同一用户多次付费按人算还是按订单算。
这些定义写进一页任务卡,包含分析问题、指标公式、统计粒度、时间范围、过滤条件、数据源和负责人。任务卡不需要很长,关键在于所有协作方看同一份。
口径没定就清洗,常见后果是洗完才发现分母多了一批测试账号,或者分子把退款订单算成了收入。 这时返工的不只是数据,还包括已经发出的报表和基于报表做的判断。
第 2 步:做数据概览和质量检查
先看数据长什么样,再决定怎么洗。数据概览至少看七项:行数、时间范围、主键是否唯一、关键字段空值率、枚举值分布、数值分布、与其他表的关联覆盖率。
这一步只记录问题,不急着改。按影响排序:会导致指标算错的先处理,只影响展示的后处理。例如支付表里 order_id 有重复,先确认是多次回调还是多笔支付;前者要去重,后者不能删。
数据概览的产出是一份数据质量报告,写清问题、影响范围、处理建议和负责人。报告不用漂亮,能让下一个接手的人知道哪里埋了雷就够了。
第 3 步:统一字段语义、类型和时区
字段统一包括三件事:语义、类型、时区。它们看起来琐碎,却是多表分析里最常见的错误来源。
字段语义
字段字典至少写清字段名、业务含义、单位、来源表、允许值和负责人。跨系统关联的 ID 建议用字符串,避免前导零丢失或精度问题。
user_id、uid、account_id 可能指同一个对象,也可能不是。先做字段映射,再写关联条件。字段同名但含义不同,比字段不同名更危险。
数据类型
金额用定点小数或最小货币单位整数,避免浮点误差;时间用时间类型,不要用字符串比较;枚举值统一大小写和命名。类型转换失败的行单独留存,不能静默置空。
时区
事件表常按 UTC 记录,报表按业务时区展示。存储统一 UTC,查询时再转换。还要区分事件发生时间和数据入库时间,这两个时间回答的是不同问题。
跨时区业务要明确按哪个时区切日。有夏令时的地区,固定加减小时会错一小时,需要使用带时区规则的转换。验收信号是同一笔订单在订单表、支付表和报表中的日期一致。
第 4 步:清洗缺失、重复、异常和不一致
清洗解决数据质量问题,不负责定义业务口径。口径在第 1 步定,清洗只负责把不符合规则的值处理掉,并留下记录。
缺失值先判断原因。用户没填、系统没采到、业务本来就没有发生,是三种情况。次数类字段缺失可能表示没有发生,可以填 0;金额、时长、评分缺失填 0 会改变分布和均值。核心指标缺失优先回溯数据源,不能确认时标记缺失。
重复值分完全重复和业务重复。同一订单多次支付回调,订单号相同但回调时间不同,属于业务重复,要按订单号去重。异常值先判断是录入错误还是真实极值,真实的大客户订单不能因为看起来大就删。枚举值、单位、大小写、前后空格也要统一。
更细的缺失值填补和异常检测方法,可以看《AI 数据分析如何落地?取数、清洗、建模、可视化》,这里不重复。
清洗日志要记录规则、影响行数、处理人和回退方式。删除、覆盖、改口径之前,先备份原始表或保留快照。 没有回退路径的清洗,出问题时只能重跑整条链路。
第 5 步:数据集成与关联,先确认粒度再 join
关联前先问三个问题:两张表的粒度是否一致、关联键是否唯一、关联后行数会不会膨胀。
以订单表和支付表为例。订单表一行一个订单,支付表一行一次支付。一个订单可能失败两次后成功,直接按 order_id 关联,订单金额会被重复计算三次。正确做法是先按订单聚合支付表,再与订单表关联。
左连接保留主表全部记录,内连接只保留匹配记录。选择哪种取决于分析问题。默认内连接会静默丢掉未匹配的订单,月底对账时才发现少了。关联后做三项核对:主表行数是否保持、关联命中率是多少、金额或次数总和是否与源表一致。关联命中率就是匹配上的主表行数占主表总行数的比例。
有补数或迟到数据时,要约定回补时间窗和对账方式。关联后的宽表要能回答一行代表什么,否则后续所有聚合都不可信。
第 6 步:数据变换与特征构造
变换把字段整理成分析需要的形态,同时保留可解释性。常见动作包括派生指标、聚合、编码、分箱和标准化。客单价、付费间隔、用户月付费次数都属于派生指标。
保留原始字段和计算公式,不要只留变换后的结果。否则三个月后没人说得清这个字段怎么来的。变换说明写清公式、参数、依赖字段和版本,换个人也能复算。
做预测模型时,先划分训练集和测试集,再在训练集上拟合缺失值填补、标准化和特征选择。用全量数据算均值再标准化,会把测试集信息带进训练。scikit-learn 的文档把这类问题列为数据泄漏,推荐的解决方式是用 Pipeline 把变换和模型串起来。
只做描述性分析时,重点放在公式一致和结果可复算,不必为了建模做标准化。
第 7 步:数据规约,按需做
数据规约解决数据太大、维度太多、计算太慢的问题,按需做。建模前特征过多、全量数据跑不动、需要抽样验证时,可以考虑特征选择、采样、聚合或降维。
先理解数据再降维。字段压掉之后,业务解释成本会上升。对大多数经营分析,按业务粒度聚合比降维更实用。比如把用户行为明细聚合成用户日表,既减少数据量,也保留了解释能力。
规约后的数据要能通过一致性检查。用同一指标在规约前后各算一遍,结果一致或差异可解释,才能进入分析。
第 8 步:验收并交付可分析数据
预处理做完的标志是别人拿到数据能按同一口径复现结论,脚本跑通只说明流程能执行。验收时按下表逐项检查,任何一项不通过,都先回到对应步骤修正。
| 验收项 | 检查方法 | 不通过时的信号 |
|---|---|---|
| 范围与时间 | 核对数据起止时间、时区、切日规则 | 报表跨天对不上 |
| 粒度与主键 | 确认一行代表什么,检查主键唯一 | 同一订单出现多行 |
| 关键字段完整性 | 统计空值率和缺失分布 | 核心字段大面积缺失 |
| 类型与格式 | 检查 ID、金额、时间、枚举 | 前导零丢失、金额小数异常 |
| 关联完整性 | 核对行数、命中率、金额总和 | 关联后金额翻倍 |
| 指标一致性 | 与源系统或旧报表对账 | 差异无法解释 |
| 清洗可追溯 | 查看规则、影响行数、回退方式 | 只有结果,没有处理记录 |
| 变换可复算 | 重跑脚本,核对公式和参数 | 换个人算不出同样结果 |
| 风险与合规 | 检查敏感字段脱敏、权限最小化 | 明细数据暴露给无关人员 |
| 交付物齐全 | 数据集、字段字典、质量报告、清洗日志 | 只有一张表,没有说明 |
验收时抽一批明细人工核对,比只看总数更容易发现关联错误。交付物至少有三类:可分析数据集、字段字典、质量与清洗记录。缺一项,后面就会靠口头解释补。
数据预处理和数据分析的边界在哪里?
这两个阶段会来回迭代,但交付物不同。边界不清楚,最容易出现的情况是每个报表各有一套口径,最后没人知道该信哪一份。
| 问题 | 归属 | 判断标准 |
|---|---|---|
| 付费转化率怎么定义 | 预处理 | 形成统一公式和过滤条件 |
| 本周付费转化率为什么下降 | 分析 | 需要拆维度、验证假设、给结论 |
| 用户分群标签怎么打 | 预处理 | 标签规则可复现 |
| 哪类用户更值得运营 | 分析 | 需要比较收益、成本和可执行性 |
一个简单的判断:预处理回答这份数据能不能用、按什么口径用;分析回答业务为什么这样、接下来做什么。
边界清楚,返工就会少。分析阶段发现口径问题,回到第 1 步修改任务卡,不要在每个报表里各改一套。
AI 数据分析 Agent 能接手哪些预处理工作?
重复的字段检查、口径核对、SQL 生成、结果复核,适合交给 Agent 做第一遍。ThinkingAI 的数据分析 Agent 支持自然语言问数、多轮追问、归因分析和可视化,也能通过多 Agent 协作把取数、分析、报告串起来。它可以在已治理的数据上快速做字段盘点、异常定位和一致性检查,减少手工翻表。
指标定义、异常是否可接受、关联后金额为什么对不上,这些判断仍要由数据负责人确认。Agent 给的是可复核的中间结果,不能替代业务签字。
如果底层表结构混乱、字段没有定义,Agent 也会跟着乱。先把字段字典和指标口径建起来,再让 Agent 接手,效果会稳定得多。ThinkingAI 已服务全球超 1500 家企业、接入产品超 8000 款,这类预处理与分析衔接的场景,是数据团队常见的落地需求。
数据预处理常见问题
数据预处理一定要按这个顺序做吗?
大方向按依赖走,实际项目会迭代。字段统一和清洗可能交替进行,关联后发现新问题也会回到清洗。顺序的价值在于每一步都有产出,返工时有据可查。
缺失值可以直接填 0 吗?
看字段含义。次数类字段缺失可能表示没有发生,可以填 0;金额、时长、评分缺失填 0 会改变分布和均值。核心指标缺失优先回溯数据源,不能确认时标记缺失。
数据清洗和数据预处理有什么区别?
数据清洗是预处理的一部分,主要处理缺失、重复、异常和不一致。预处理还包括任务口径、字段统一、集成、变换、规约和验收。
时区为什么会让日报对不上?
事件按 UTC 记录,报表按本地时区切日,跨零点的事件会落到不同日期。有夏令时的地区,固定加减小时还会错一小时。存储统一 UTC,展示按业务时区转换,切日规则写进指标定义。
数据预处理一般要花多久?
取决于数据源数量、质量问题和口径复杂度,没有固定时长。先做数据概览,按问题影响排序,再决定投入,比拍一个工时更可靠。
小数据集也要做预处理吗?
要做,但可以轻量。字段含义、主键唯一性、时间范围和关键指标对账不能省;复杂的规约和特征工程可以不做。
AI 能自动完成数据预处理吗?
能接手一部分,比如字段盘点、重复值检查、SQL 生成和结果对比。业务口径、异常判断和最终验收仍要人确认。数据基础越规范,Agent 的自动化越可靠。
参考资料
- Phase 3 of the CRISP-DM Process Model: Data Preparation,Dummies,https://www.dummies.com/article/technology/information-technology/data-science/general-data-science/phase-3-of-the-crisp-dm-process-model-data-preparation-148177/
- Data Preprocessing,Data Mining and Data Warehousing,Cambridge University Press,https://www.cambridge.org/core/books/abs/data-mining-and-data-warehousing/data-preprocessing/9E68037A7A8D0E5032B57E2AF1485C12
- Common pitfalls and recommended practices,scikit-learn,https://scikit-learn.org/stable/common_pitfalls.html
- 2024 State of Analytics Engineering,dbt Labs,2024,https://www.getdbt.com/resources/state-of-analytics-engineering-2024






