热线电话:13121318867

登录
首页大数据时代用 Excel 做聚类分析:从数据准备到 K-Means 实操全流程
用 Excel 做聚类分析:从数据准备到 K-Means 实操全流程
2026-10-26
收藏

一、什么是聚类分析,什么时候用它

聚类分析是一种无监督学习方法,它把一批对象按照"相似性"自动分成若干组,让同一组内的对象尽量相似、不同组之间尽量不同。和分类不同,聚类不需要事先知道"有哪几类"——类别是数据自己长出来的。

业务中常见的聚类场景:

  • 客户分群:把用户按消费行为分成高价值、潜力、流失等群体
  • 商品分群:按销量、毛利、周转率给商品分层
  • 门店分群:按坪效、客单价、人流量给门店归类
  • 异常检测:找出和大多数样本行为差异很大的对象

Excel 不是专业的统计软件,但对于中小规模数据(几百到几千行),用 Excel 做聚类分析完全够用,而且不需要额外装 Python 或 R。本文讲清楚 Excel 里怎么做 K-Means 聚类。

二、Excel 做聚类的两种路径

2.1 路径一:用"数据分析"加载项(适合简单分组)

Excel 自带的"数据分析"工具库没有直接的聚类功能,但有一些相关工具可以辅助。真正要做 K-Means,需要手动搭计算流程。

2.2 路径二:手动实现 K-Means(本文重点)

K-Means 算法本身不复杂,核心就是"算距离→重新分组→更新中心"三步迭代。在 Excel 里用公式就能完整实现,适合理解算法原理和小规模数据。

如果数据量很大、需要层次聚类或 DBSCAN,建议用 Python(sklearn)或 SPSS;几百行以内的数据分析作业,Excel 手动实现完全可行。

三、K-Means 算法原理回顾

K-Means 的步骤:

  1. 确定 K 值:预先指定要分几类。
  2. 选初始中心:随机选 K 个样本作为初始聚类中心。
  3. 分配样本:计算每个样本到 K 个中心的距离,归到最近的那一类。
  4. 更新中心:每一类内所有样本的坐标平均值,作为新的中心。
  5. 重复 3~4:直到中心不再变化(或变化很小),收敛结束。

四、Excel 实操完整步骤

4.1 第一步:准备数据

假设我们要给 20 个客户按"月消费金额"和"到店频次"两个维度聚类。数据长这样:

客户ID 月消费(元) 月到店次数
C001 1200 8
C002 300 2
C003 2500 15
... ... ...

4.2 第二步:数据标准化

两个指标量纲不同——消费金额是几百到几千,到店次数是几次到几十次。直接算距离,金额会因为数值大而主导结果。必须先标准化。

Excel 里用 Z-Score 标准化:

标准化值 = (原始值 - 该列均值) / 该列标准差

操作:

  1. 在空白单元格算 =AVERAGE(B:B) 和 =STDEV.S(B:B)。
  2. 在新列写 =(B2 - 均值) / 标准差,下拉。
  3. 对另一个指标(到店次数)做同样操作。

4.3 第三步:选定初始中心

假设我们要分 K=3 类。从标准化后的数据里随机选 3 行,作为初始中心坐标。在表格旁边建一个"中心表":

类别 消费_zscore 频次_zscore
类1 -0.5 -0.8
类2 0.2 0.1
类3 1.3 1.5

4.4 第四步:计算每个样本到三个中心的距离

欧氏距离公式:

假设每个样本的两个标准化值在 D、E 列,三个中心在 G2:H4:

' 到类1的距离
=SQRT((D2-$G$2)^2 + (E2-$H$2)^2)

' 到类2的距离
=SQRT((D2-$G$3)^2 + (E2-$H$3)^2)

' 到类3的距离
=SQRT((D2-$G$4)^2 + (E2-$H$4)^2)

4.5 第五步:分配类别

用 MATCH 函数找最近的中心是第几类:

=MATCH(MIN(F2:H2), F2:H2, 0)

这个公式返回 1、2 或 3,就是该样本被分到的类别。

4.6 第六步:更新中心

对每一类,重新算所有被分到这一类的样本的平均坐标,作为新中心:

' 类1的新中心-消费维度
=AVERAGEIF($I:$I, 1, D:D)

' 类1的新中心-频次维度
=AVERAGEIF($I:$I, 1, E:E)

类2、类3 同理。

4.7 第七步:迭代直到收敛

把新算出来的中心,替换掉旧中心,重复第四步到第六步。观察中心坐标:如果新旧中心几乎不变(变化小于 0.001),就收敛了。

通常 5~10 轮迭代就会稳定下来。

五、K 值怎么选

K-Means 必须事先指定分几类,这是它的局限。实际操作中怎么选 K?

5.1 业务经验法

最常用。比如客户分群,业务上通常想分 3~5 类(高价值、潜力、一般、流失),直接取 K=3 或 K=4。

5.2 手肘法(Elbow Method)

试 K=2、3、4、5、6,分别算每个 K 下"簇内误差平方和 SSE"(所有样本到各自中心距离的平方和)。SSE 随 K 增大单调下降,但下降速度会在某个 K 值明显变缓,形成一个"手肘",那个拐点就是比较合适的 K。

在 Excel 里可以画出 SSE 随 K 变化的折线图,肉眼找拐点。

5.3 轮廓系数

轮廓系数衡量聚类效果好坏——取值 -1 到 1,越接近 1 说明类内紧凑、类间分离。Excel 里计算较繁琐,适合 K 值少的情况快速试。

六、结果解读

聚类收敛后,每个样本都有一个类别编号。回到原始数据(非标准化的),按类别分组算平均值:

=AVERAGEIF(类别列, 1, 消费列)

得到每一类在消费金额、到店次数上的平均水平,然后给每类命名:

类别 平均月消费 平均到店次数 命名
类1 2500 15 高价值高频客户
类2 800 5 普通客户
类3 200 1 低频沉睡客户

这就是业务可以直接用的客户分群结果。

七、Excel 做聚类的局限

7.1 数据量不能太大

Excel 行数上限 104 万行,但手动写公式迭代 K-Means,几百行以内流畅,几千行就会卡,上万行基本没法用。

7.2 维度不能太多

两个维度手算距离还能忍,5 个维度以上公式会变得非常长且难维护。Excel 适合 2~4 个特征的小聚类。

7.3 没有层次聚类、DBSCAN

K-Means 假设簇是凸形、大小相近,对不规则形状的簇效果不好。Excel 只能实现 K-Means,其他算法需要专业工具。

7.4 迭代过程手动

不像 Python 跑一次自动收敛,Excel 要手动替换中心、反复迭代,容易出错。

八、什么时候该用什么工具

场景 推荐工具
作业演示、几百行数据、理解算法 Excel 手动 K-Means
几千行以上、需要多种聚类算法 Python sklearn
业务人员不想写代码、图形化操作 SPSS、R Commander
实时聚类、大数据量 Spark MLlib

九、实操注意事项

9.1 一定要标准化

不标准化,量纲大的指标会主导距离计算,聚类结果失真。

9.2 初始中心影响结果

K-Means 对初始中心敏感。建议随机选不同初始中心跑 3~5 次,看结果是否稳定。如果不同初始点得到差异很大的分群,说明数据本身簇结构不清晰,或者 K 值不合适。

9.3 异常值要先处理

极端值会拉偏中心。先画箱线图看看有没有离群点,有的话先剔除或 Winsorize。

9.4 聚类结果要回到业务解释

聚类不是目的,业务解释才是。每一类都要能用业务语言讲清楚"这是一群什么样的客户/门店/商品",讲不出来说明 K 值不对或者特征选得不好。

十、总结

用 Excel 做 K-Means 聚类,本质是把"算距离→分组→更新中心"这套逻辑用 Excel 公式复刻一遍。它的价值不在于替代专业工具,而在于:

  • 帮你真正理解 K-Means 的每一步在做什么,而不是调一个 API 黑盒。
  • 小数据量快速出结果,不需要配 Python 环境。
  • 教学演示和作业场景,Excel 图表展示比代码直观。

掌握 Excel 手动聚类之后,再去学 Python sklearn 的 KMeans(),会发现代码只是把这套公式自动化了一遍——核心逻辑完全一样。

推荐学习书籍 《CDA一级教材》适合CDA一级考生备考,也适合业务及数据分析岗位的从业者提升自我。完整电子版已上线CDA网校,累计已有10万+在读~ !

免费加入阅读:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0

数据分析师资讯
更多

OK
客服在线
立即咨询
客服在线
立即咨询