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

关于基于技师评估数据集绘制多类别分组条形图(Cat Plot)是否需重构数据集的技术问询

实现技师评估通过次数的分组条形图

首先,咱们先明确核心需求:你需要按技师分组,每个组里的条形对应不同评估类别的通过次数。针对你的问题,我分两种实用方案来解答:

方案1:用Seaborn Catplot(推荐,轻量数据转换)

虽然Seaborn的catplot更适配长格式(整洁)数据,但你不需要“彻底重构”原始数据集,只需要两步简单的聚合和格式转换,完全是数据分析中的常规操作:

步骤1:计算每个技师每个类别的通过次数

先把你的示例数据转成DataFrame,然后按技师分组,对每个评估类别求和(因为1代表通过,求和结果就是该类别的通过次数):

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 你的原始数据
data = [{"Name":"A","cat1":1,"cat2":0},{"Name":"A","cat1":1,"cat2":1},{"Name": "B", "cat1":0, "cat2":1}]
df = pd.DataFrame(data)

# 聚合计算通过次数
summary_df = df.groupby('Name')[['cat1', 'cat2']].sum().reset_index()

步骤2:转成长格式适配Seaborn

用melt把宽格式转成长格式,这一步只是把多列的评估类别转成单独的Category列,操作非常轻量,不会改动原始数据集:

long_df = summary_df.melt(id_vars='Name', var_name='Category', value_name='Pass_Count')

步骤3:绘制分组条形图

现在就可以用hue参数轻松实现分组条形效果:

sns.catplot(x='Name', y='Pass_Count', hue='Category', kind='bar', data=long_df)
plt.title('Technician Assessment Pass Counts')
plt.show()

方案2:手动用Matplotlib绘制(无需转长格式)

如果你不想做长格式转换,也可以基于聚合后的宽格式数据,直接用Matplotlib手动构建分组条形:

# 先得到聚合后的通过次数统计
summary_df = df.groupby('Name')[['cat1', 'cat2']].sum().reset_index()

# 设置绘图基础参数
names = summary_df['Name']
categories = ['cat1', 'cat2']
x = range(len(names))
bar_width = 0.35

# 创建画布和轴
fig, ax = plt.subplots()

# 分别绘制两组条形
ax.bar([i - bar_width/2 for i in x], summary_df['cat1'], bar_width, label='cat1')
ax.bar([i + bar_width/2 for i in x], summary_df['cat2'], bar_width, label='cat2')

# 美化图表细节
ax.set_xticks(x)
ax.set_xticklabels(names)
ax.set_ylabel('Pass Count')
ax.set_xlabel('Technician Name')
ax.legend(title='Assessment Category')
plt.title('Technician Assessment Pass Counts')

plt.show()

关键说明

你提到“无需完全重构数据集”——其实完全不做任何数据转换是不可能的,因为原始数据是每条记录对应一次评估,你必须先计算每个技师每个类别的通过次数(这一步是核心逻辑)。但上面两种方案都不需要修改原始数据集,只是生成了一个小的聚合/转换后的中间数据集,完全算不上“彻底重新格式化”。

如果追求代码简洁和Seaborn的自带美观样式,方案1是首选;如果想避开长格式转换,方案2也能完美实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:07:33