You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python DataFrame按kmeans结果groupby时不展示全部分类的问题

问题成因分析

以下是导致该问题的常见原因,按发生概率从高到低排列:

  • 分组字段名不匹配:你新增的聚类结果字段名为kmeans categories,但代码中分组时使用的字段名是kmeans,如果你的数据集里不存在名为kmeans的字段,或者kmeans字段本身就只有0-4共5个取值,就会出现该问题。
  • 分类5、6、7的样本已被提前过滤:你在聚类完成后到执行分组计算的过程中,可能执行了dropna()、条件筛选、切片等操作,把属于5、6、7分类的样本全部删除了。你之前确认的「分类列有8个唯一值」可能是聚类刚结束时的结果,并非执行分组时用到的speed数据集的实际情况。你可以先执行print(speed['kmeans'].unique())验证分组字段的实际取值。
  • 空簇/无有效样本的分类被自动丢弃:
    1. 若5、6、7三个分类下的所有样本的24小时速度列全部为空值,mean()计算时会自动丢弃全为空值的分组
    2. KMeans聚类过程中可能生成了空簇,虽然你设置了n_clusters=8,但受样本分布、初始化参数影响,部分簇没有被分配任何样本,实际数据集里不存在属于5、6、7分类的样本
      你可以执行print(speed['kmeans'].value_counts(dropna=False))查看每个分类的样本量,确认5、6、7分类的样本数是否为0。
  • 分组时默认丢弃空值分类:如果你的kmeans字段中5、6、7的取值实际为空值,pandas的groupby默认会跳过空值分组,可以指定dropna=False参数保留空值分组,代码调整为speed_kmeans= speed.groupby(['kmeans'], dropna=False).mean()即可。
  • 聚类标签赋值错误:你在把聚类结果写入数据集的kmeans字段时可能出现了赋值逻辑错误,比如只把前5个分类的标签写入了数据集,5、6、7的标签没有被正确写入。

内容的提问来源于stack exchange,提问作者CWeeks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:45:03