4. 数据清洗与预处理:处理缺失值、去重、标准化供应商名称与物料编码

数据清洗与预处理是采购支出分析项目中耗时最长、但价值最高的环节。原始数据通常来自 ERP、SRM、财务系统等多个源头,存在缺失、重复、格式不统一等问题。如果跳过这一步骤直接分析,后续的节约跟踪指标将失去可信基础。本节将系统讲解缺失值处理、重复数据去重、供应商名称标准化和物料编码统一四个核心任务。

4.1 缺失值处理策略

缺失值在采购数据中普遍存在,常见于物料描述、供应商分类、合同编号等字段。处理缺失值需要根据字段的业务含义和缺失比例选择不同策略。

缺失字段类型 常见缺失比例 推荐处理策略 业务说明
物料描述 5% - 15% 根据物料编码回填标准描述 从主数据系统或历史记录中匹配
供应商分类 10% - 30% 按采购金额或品类推断分类 设置默认分类后由业务确认
合同编号 20% - 40% 标记为"无合同",单独归集 用于分析合同覆盖率
单价/数量 < 5% 按历史均价或同类物料均值填充 需记录填充逻辑以备审计
采购日期 < 1% 删除该行记录 日期缺失无法参与时间序列分析
实践建议:建立缺失值处理日志,记录每条缺失数据的处理方式、填充来源和责任人。这不仅是数据治理的要求,也是后续节约指标可追溯性的基础。

4.2 重复数据识别与去重

重复数据通常由系统间数据同步延迟、人工多次录入或接口异常导致。去重需要先定义"重复"的判断标准,再执行合并或删除操作。

去重判断层级:

  1. 完全重复:所有字段完全一致,直接删除保留一条。
  2. 关键字段重复:采购订单号 + 物料编码 + 供应商编码 相同,但其他字段有差异,需合并或标记。
  3. 近似重复:供应商名称或物料描述存在拼写差异,需标准化后再判断。
去重执行步骤:
-- 示例:基于采购订单号和物料编码去重,保留最新记录
WITH ranked AS (
  SELECT *,
         ROW_NUMBER() OVER (
           PARTITION BY purchase_order_no, material_code
           ORDER BY record_date DESC, system_load_time DESC
         ) AS rn
  FROM raw_purchase_data
)
SELECT * FROM ranked WHERE rn = 1;

4.3 供应商名称标准化

供应商名称不统一是采购数据清洗中最棘手的环节。同一家供应商可能以全称、简称、含特殊字符、含分公司后缀等多种形式出现。标准化需要建立规则引擎和对照表。

标准化规则示例:

  • 去除公司类型后缀(有限公司、有限责任公司、股份有限公司 → 统一为"有限公司")
  • 统一全角/半角字符、去除首尾空格
  • 将"("和"("统一为英文括号
  • 建立"简称→标准全称"映射表,如"华为"→"华为技术有限公司"
常见陷阱:不要完全依赖自动化规则。对于高频供应商(前20%的供应商覆盖80%的采购金额),建议人工核对并建立标准名称库。自动化规则处理低频供应商,人工审核高频供应商,效率与质量兼顾。

4.4 物料编码统一

物料编码在不同系统间可能存在编码规则不同、位数不一致、含前导零等问题。统一物料编码是后续品类分析和节约计算的前提。

物料编码清洗流程:

  1. 格式标准化:去除前导零、统一字母大小写、去除分隔符
  2. 编码映射:建立旧编码→新编码的对照表,确保跨系统可追溯
  3. 层级归类:将物料编码映射到统一的品类树(如:编码前4位=大类,中间3位=中类,后3位=小类)
物料编码标准化示例(Python):
def standardize_material_code(code):
    # 去除前导零和空格
    code = code.strip().lstrip('0')
    # 统一为大写
    code = code.upper()
    # 去除特殊字符
    import re
    code = re.sub(r'[^A-Z0-9]', '', code)
    # 补足固定长度(如10位)
    code = code.zfill(10)
    return code

4.5 数据清洗整体流程

将上述四个任务整合为一个可执行的清洗流水线,确保每一步的输出都经过质量校验。

数据清洗与预处理整体流程 原始采购数据 缺失值处理 重复数据去重 供应商名称标准化 物料编码统一 清洗后标准数据集 质量校验节点 • 缺失率 < 5% • 重复率 < 1% • 名称匹配率 > 95% • 编码覆盖率 100%

4.6 清洗质量评估指标

数据清洗完成后,需要用量化指标评估清洗效果,确保数据达到分析就绪状态。

评估维度 指标名称 目标值 计算方式
完整性 字段缺失率 < 5% 缺失记录数 / 总记录数
唯一性 重复记录率 < 1% 重复记录数 / 总记录数
一致性 供应商名称匹配率 > 95% 自动匹配成功数 / 总供应商数
准确性 物料编码覆盖率 100% 有标准编码记录数 / 总记录数
关键提醒:数据清洗不是一次性工作。在采购支出分析项目中,建议每月或每季度执行一次增量清洗,将新接入的数据纳入标准化体系。同时,将清洗规则沉淀为可复用的数据清洗脚本,减少重复劳动。