1. ABC分类法基础

1.1 起源:从帕累托观察到库存管理

ABC分类法的思想根源可以追溯到19世纪末意大利经济学家维尔弗雷多·帕累托(Vilfredo Pareto)的观察。帕累托在研究英国财富分配时发现:约20%的人口掌握了约80%的财富。这一“关键少数与次要多数”的统计规律后来被广泛应用于质量管理、经济学和运营管理领域。

1951年,美国通用电气公司的工程师H. Ford Dickie在库存管理中首次系统化应用了这一原则,提出了“ABC库存分类法”。其核心洞察是:库存中的物料在价值贡献上存在显著的不均衡性——少数高价值物料占据了总库存价值的大部分,而大量低价值物料只贡献了很小一部分价值。

关键里程碑: 帕累托原则(80/20法则)→ 质量管理(朱兰博士)→ 库存管理(Dickie, 1951)→ 现代供应链ABC分类体系。

1.2 核心原理:帕累托原则在库存中的映射

ABC分类法将库存物料按年度消耗金额(年需求量 × 单位成本)从高到低排序,然后划分为三个类别:

类别 物料数量占比 年度消耗金额占比 管理策略
A类 5% – 15% 70% – 80% 严格管控、高频盘点、精准预测、安全库存低
B类 15% – 25% 15% – 25% 适度管控、定期盘点、常规预测
C类 60% – 80% 5% – 10% 简化管理、低频率盘点、高安全库存、批量订购

分类的数学基础是累计价值占比曲线(又称帕累托曲线)。设物料按价值降序排列,第 \( i \) 个物料的累计价值占比为:

累计价值占比(i) = Σ(第1到第i个物料的价值) / 总库存价值 × 100%

通常的划分阈值:

  • A类:累计价值占比达到 70% – 80% 的前几个物料。
  • B类:累计价值占比从 80% 到 95% 之间的物料。
  • C类:累计价值占比最后 5% – 10% 的剩余物料。
实践提示: 阈值并非固定不变。在工程实践中,A类物料数量占比通常控制在 5%–15% 之间,具体取决于企业的库存结构和管理精细度要求。阈值调整正是本课程后续“参数调优”的核心内容。
ABC分类帕累托曲线与分类区域 ABC分类帕累托曲线与分类区域 物料数量累计占比 (%) 累计价值占比 (%) A类 B类 C类 (20%, 80%) (50%, 95%) 分类阈值 A: 0–20% 物料 B: 20–50% 物料 C: 50–100% 物料

1.3 在库存管理中的核心价值

ABC分类法不是简单的“贴标签”工具,而是资源分配决策框架。其核心价值体现在以下四个维度:

  1. 管理精力聚焦:将有限的管理资源(人力、系统算力、盘点频次)集中在A类物料上,避免“平均用力”。
  2. 库存成本优化:对A类物料设置较低的安全库存、高频次小批量补货,降低资金占用;对C类物料设置较高安全库存、大批量补货,降低订购成本。
  3. 服务水平差异化:A类物料采用更精准的需求预测和更短的补货提前期,保障关键物料不缺货;C类物料允许适度缺货风险。
  4. 数据驱动决策基础:ABC分类是后续库存参数调优(安全库存、再订货点、经济订购批量)的输入前提。
常见误区: 仅按单价分类,忽略年需求量;分类后不动态更新;将ABC分类等同于“重要性排序”而忽略物料可替代性和供应风险。这些误区会导致分类失效,本课程后续章节将逐一给出工程化解决方案。

1.4 适用场景与边界条件

ABC分类法并非万能,其适用性取决于库存特征和企业运营环境:

适用场景 特征描述 典型行业
高适用 物料种类多(>500 SKU)、价值分布高度不均衡、需求相对稳定 制造业原材料、备品备件、零售快消品
中等适用 物料种类中等、价值分布较均匀、需求有一定波动 医疗器械、电子元器件、化工原料
低适用 物料种类少、价值分布均匀、需求极度不稳定或项目型 定制设备、工程项目、一次性采购

在低适用场景中,建议引入多维分类(如ABC-XYZ矩阵,结合需求波动性)或聚类分析等更精细的方法,这些内容将在本课程后续章节展开。

ABC分类在库存管理中的四大价值维度 ABC分类在库存管理中的四大价值维度 ABC分类法 资源分配决策框架 管理精力聚焦 A类高频盘点 · C类简化管理 库存成本优化 降低资金占用 · 减少订购成本 服务水平差异化 精准预测 · 保障关键物料 数据驱动决策 参数调优 · 持续改进基础 四个维度相互支撑,共同构成ABC分类法的工程价值闭环

1.5 工程实践中的分类流程

在Python工程实现中,ABC分类的标准流程包含以下步骤:

  1. 数据准备:获取物料清单(SKU)、年需求量、单位成本。
  2. 计算年度消耗金额:年需求量 × 单位成本。
  3. 降序排序:按年度消耗金额从高到低排列。
  4. 计算累计占比:累计金额 / 总金额 × 100%。
  5. 阈值划分:根据预设阈值(如A: 0–80%, B: 80–95%, C: 95–100%)分配类别。
  6. 结果验证:检查A类物料数量占比是否在合理范围(5%–15%),必要时调整阈值。
import pandas as pd

def abc_classify(df, value_col='annual_value', a_threshold=0.8, b_threshold=0.95):
    """
    标准ABC分类函数
    Parameters:
        df: DataFrame,包含物料ID和年度消耗金额
        value_col: 年度消耗金额列名
        a_threshold: A类累计价值占比阈值(默认80%)
        b_threshold: B类累计价值占比阈值(默认95%)
    Returns:
        df: 添加了ABC分类标签的DataFrame
    """
    df_sorted = df.sort_values(value_col, ascending=False).reset_index(drop=True)
    total_value = df_sorted[value_col].sum()
    df_sorted['cum_pct'] = df_sorted[value_col].cumsum() / total_value
    
    conditions = [
        df_sorted['cum_pct'] <= a_threshold,
        df_sorted['cum_pct'] <= b_threshold,
        df_sorted['cum_pct'] > b_threshold
    ]
    choices = ['A', 'B', 'C']
    df_sorted['abc_class'] = pd.np.select(conditions, choices, default='C')
    
    return df_sorted