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

如何统计列值制作堆叠条形图?解决count列全为NaN问题

解决方案

你之前的代码出现全NaN是因为df['Detail'].value_counts()统计的是全表范围内每个Detail值的总次数,它的索引是Detail的不同取值,和原DataFrame的索引完全不匹配,直接赋值时大部分位置找不到对应值,自然会填充NaN。

要实现按Main分组统计各Detail的数量并制作堆叠条形图,正确步骤如下:

  1. 分组统计每个Main下各Detail的出现次数
    用groupby同时按Main和Detail分组,统计每组的行数(即对应数量):
# 分组计数并重置索引为常规DataFrame
count_df = df.groupby(['Main', 'Detail']).size().reset_index(name='count')
  1. 重塑数据为堆叠条形图所需格式
    把数据转换成以Main为行索引、Detail为列、count为值的结构,缺失值填充0(避免某个Main下没有的Detail出现空缺):
stacked_data = count_df.pivot(index='Main', columns='Detail', values='count').fillna(0)
  1. 绘制堆叠条形图
    直接调用pandas的绘图方法生成堆叠条形图:
stacked_data.plot(kind='bar', stacked=True, figsize=(10,6))

如果需要自定义图表样式,可补充参数调整:

ax = stacked_data.plot(kind='bar', stacked=True, figsize=(10,6))
ax.set_title('各Main分类下Detail的分布')
ax.set_xlabel('Main分类')
ax.set_ylabel('数量')
ax.legend(title='Detail分类')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:07:03