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

如何基于Pandas分组结果绘制分类折线图?

解决方法:分组后绘制分类折线图

没问题,我来帮你实现这个需求!要画出分类A、B各自随月份变化的折线图,核心是先把分组后的结果转换成适合可视化的结构,然后用pandas或matplotlib来绘制就行,下面分两种常用方法说明:

方法一:用pandas内置绘图(快速简洁)

首先,你已经通过groupby得到了多级索引的统计结果,我们可以用unstack()把Category从索引转成列,这样每个分类就是单独的一列,月份作为X轴索引,直接调用plot()就能生成折线图:

import pandas as pd
import matplotlib.pyplot as plt

# 你的原始数据
data = {
    'Month': [3,3,3,4,4,4],
    'Category': ['A','A','B','A','B','B'],
    'Quantity': [1,1,1,1,1,1]
}
df = pd.DataFrame(data)

# 分组统计
grouped = df.groupby(['Month','Category'])['Quantity'].count()

# 转换为宽格式DataFrame(Category为列)
df_plot = grouped.unstack(level='Category')

# 绘制折线图
df_plot.plot(kind='line', marker='o', figsize=(8,5))
plt.title('Monthly Transaction Count by Category')
plt.xlabel('Month')
plt.ylabel('Number of Transactions')
plt.legend(title='Category')
plt.show()

这段代码会自动为A、B生成不同颜色的折线,标记点用圆圈显示,图例和坐标轴标签也会自动配置好。

方法二:用matplotlib手动绘制(更灵活自定义)

如果你需要更精细的控制(比如自定义颜色、线条样式),可以把分组结果转成长格式DataFrame,然后按分类循环绘制:

import pandas as pd
import matplotlib.pyplot as plt

# 原始数据和分组统计同上
grouped_df = grouped.reset_index(name='Count')  # 把多级索引转成普通列,统计值命名为Count

# 创建画布
plt.figure(figsize=(8,5))

# 遍历每个分类,绘制折线
for category, subset in grouped_df.groupby('Category'):
    plt.plot(subset['Month'], subset['Count'], marker='s', linestyle='--', label=category)

# 添加图表元素
plt.title('Monthly Transaction Count by Category')
plt.xlabel('Month')
plt.ylabel('Number of Transactions')
plt.legend(title='Category')
plt.xticks([3,4])  # 固定X轴显示3、4两个月份
plt.grid(alpha=0.3)  # 添加网格线
plt.show()

这种方法可以自由调整每个分类的线条样式、标记形状,适合需要定制化图表的场景。

关键说明

  • 原始groupby的结果是多级索引Series,直接画图无法区分A、B两条线,所以必须通过unstack()转宽格式,或者reset_index()转长格式,让数据结构适配可视化需求。
  • 两种方法都能实现你的需求,第一种适合快速出图,第二种适合深度定制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:50:38