4. ABC分类的实战案例

理论框架建立后,本章将聚焦于ABC分类的落地执行。我们将通过两个最常用的工具——Excel(适合单次、小规模分析)和Python(适合周期性、大规模自动化)——完成从数据准备到分类输出的全流程。无论你身处哪个行业,掌握这两种方法都能让你在库存分析中游刃有余。

4.1 实战案例背景:某电子元器件仓库数据

为统一演示,我们使用以下模拟数据集。该数据集包含10个SKU,涵盖年用量与单价信息,是典型的ABC分析输入格式。

SKU编号物料名称年用量(件)单价(元)
A001主控芯片IC-015,000120.00
A002高频电容C-10050,0000.85
B001连接器CON-8P12,0003.50
B002电阻R-1K200,0000.12
C001散热片HS-4080045.00
C002LED指示灯绿30,0000.60
D001电源模块PM-121,20085.00
D002贴片电感L-1015,0001.20
E001晶振X-16M6,0002.80
E002铝电解电容CAP-1008,0004.50
数据准备要点:确保年用量数据覆盖完整12个月周期,单价采用加权平均采购成本。若存在汇率波动或批量折扣,建议使用标准成本。

4.2 使用Excel进行ABC分类实操(手动流程)

Excel是快速验证分类逻辑的首选工具。以下步骤将引导你从原始数据生成ABC分类结果。

步骤1:计算年度金额与排序

  1. 新增列“年度金额” = 年用量 × 单价。
  2. 按“年度金额”降序排列整个数据集。
  3. 新增列“累计金额”,从最大项开始向下累加。
  4. 新增列“累计金额占比” = 累计金额 / 总金额。

步骤2:设定分类阈值并标记类别

使用标准阈值:A类(前70%~80%累计占比)、B类(80%~95%)、C类(95%~100%)。在Excel中可使用IF嵌套函数实现自动标记。

=IF(E2<=0.7, "A", IF(E2<=0.95, "B", "C"))

其中E列为累计金额占比。将公式向下填充即可完成分类。

步骤3:结果验证与可视化

使用Excel的柱状图+折线图组合绘制帕累托图:柱状图显示各SKU年度金额,折线图显示累计占比。快速检查A类物料是否确实为少数高价值项。

SKU年度金额(元)累计占比ABC类别
A001600,00038.5%A
D001102,00045.0%A
C00136,00047.3%B
E00236,00049.6%B
B00142,00052.3%B
…………
Excel实操避坑:排序前务必锁定数据区域,避免排序后公式错乱。建议先将原始数据粘贴为数值,再执行排序操作。

4.3 使用Python进行ABC分类自动化(脚本流程)

当SKU数量超过500个或需要每月重复分析时,Python脚本能大幅提升效率。以下代码使用pandas库实现全流程自动化。

核心代码实现

import pandas as pd
import numpy as np

# 1. 读取数据
df = pd.read_excel('inventory_data.xlsx')

# 2. 计算年度金额
df['Annual_Value'] = df['Annual_Usage'] * df['Unit_Price']

# 3. 按金额降序排序并重置索引
df = df.sort_values('Annual_Value', ascending=False).reset_index(drop=True)

# 4. 计算累计金额与累计占比
df['Cumulative_Value'] = df['Annual_Value'].cumsum()
total_value = df['Annual_Value'].sum()
df['Cumulative_Percent'] = df['Cumulative_Value'] / total_value

# 5. 定义分类函数
def abc_classifier(percent):
    if percent <= 0.70:
        return 'A'
    elif percent <= 0.95:
        return 'B'
    else:
        return 'C'

# 6. 应用分类
df['ABC_Class'] = df['Cumulative_Percent'].apply(abc_classifier)

# 7. 输出结果
df.to_excel('abc_classified_output.xlsx', index=False)
print("ABC分类完成,结果已保存。")
print(df[['SKU', 'Annual_Value', 'Cumulative_Percent', 'ABC_Class']].head(10))

脚本扩展建议

  • 参数化阈值:将0.70和0.95定义为变量,便于根据不同业务场景调整。
  • 多维度分类:可扩展为同时考虑金额与缺货风险的二维矩阵分类。
  • 自动生成报告:集成matplotlib库,在脚本运行后自动输出帕累托图。
Python自动化注意事项:确保输入数据无空值,且金额列数据类型为数值型。建议在脚本开头加入数据校验步骤,避免因数据格式错误导致分类偏差。

4.4 Excel vs Python:方法对比与选型建议

对比维度Excel方法Python方法
上手难度低,基础操作即可中,需基础编程能力
处理规模适合<5000行数据可处理百万级数据
重复执行效率低,每次需手动操作高,一键运行
可追溯性依赖操作步骤记录代码即文档,版本可控
可视化能力内置图表,交互性强需额外库,静态图为主
适用场景临时分析、快速验证月度/季度定期分析、数据管道
选型建议:对于初创企业或SKU少于200个的团队,Excel完全够用。当企业进入成长期,SKU突破1000且需要与ERP系统对接时,建议迁移至Python自动化方案。

4.5 ABC分类自动化流程架构

下图展示了从数据输入到分类输出的完整自动化流程,适用于Python脚本或任何编程语言实现的分类系统。

ABC分类自动化流程架构图 数据输入层 数据清洗与校验 金额计算与排序 阈值判定与分类 结果输出与报告 输入来源 ERP导出 / 手工台账 API接口 / 数据库查询 输出格式 Excel报表 / 数据库更新 可视化仪表盘 / 邮件推送

4.6 实操检查清单

无论选择哪种工具,完成ABC分类后请对照以下清单进行质量检查:

  • 完整性检查:所有SKU是否都被分配了类别?无遗漏项。
  • 合理性检查:A类SKU数量是否占总SKU数的5%~15%?金额占比是否在60%~80%?
  • 边界检查:位于阈值边界(如累计占比69.5%或70.5%)的SKU是否被正确归类?
  • 一致性检查:同一物料编码在不同数据源中的分类结果是否一致?
  • 可操作性检查:分类结果是否能直接指导后续的盘点策略、采购策略和安全库存设置?
关键认知:ABC分类不是一次性的工作。建议每季度或每半年重新运行一次分类流程,因为产品生命周期、市场需求和采购价格都在动态变化。将分类自动化脚本纳入月度运营流程,是库存精细化管理的第一步。