You need to enable JavaScript to run this app. 使用pandas按工作日分组后如何绘制按日期和用户类型分组的柱状图
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas按工作日分组后如何绘制按日期和用户类型分组的柱状图

基于分组统计结果绘制分组柱状图的实现方案

你已经完成了分组统计得到df1,可以通过以下两种常用方式实现需求:

方法1:使用pandas内置绘图(无需额外安装第三方库)

首先需要将长格式的df1转为宽格式,方便按组别生成柱状图:

import matplotlib.pyplot as plt

# 长表转宽表,缺失的组合默认填充为0
df_pivot = df1.pivot(index='day', columns='usertype', values='times').fillna(0)

# 绘制分组柱状图
df_pivot.plot(kind='bar', figsize=(10, 6))

# 自定义图表样式
plt.xlabel('工作日')
plt.ylabel('出现次数')
plt.title('不同用户类型的工作日次数分布')
plt.xticks(rotation=0) # 保持x轴标签水平显示
plt.legend(title='用户类型')

plt.show()

方法2:使用seaborn绘图(样式更美观,支持直接使用长表)

如果已经安装seaborn库,可以直接用原df1绘制,无需提前转透视表:

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(10, 6))
# 直接指定x、y、分组字段hue即可
sns.barplot(data=df1, x='day', y='times', hue='usertype')

# 自定义图表样式
plt.xlabel('工作日')
plt.ylabel('出现次数')
plt.title('不同用户类型的工作日次数分布')
plt.legend(title='用户类型')

plt.show()

可选优化

如果你的day字段是0-6的数字编号,可以通过映射替换为中文星期名,提升图表可读性:

weekday_map = {0: '周一', 1: '周二', 2: '周三', 3: '周四', 4: '周五', 5: '周六', 6: '周日'}
df1['day'] = df1['day'].map(weekday_map)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 03:42:01