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

Python如何绘制按年份、季度分组的销售数据分组柱状图

自动化实现方案

不需要手动构造嵌套列表,直接打通数据库读取、数据聚合、绘图全流程即可,全量30年数据处理耗时不到1秒,具体实现如下:

前置依赖安装

先安装需要的第三方库,执行以下命令:

pip install pymysql pandas matplotlib

完整实现代码

代码分为三个模块:MySQL数据拉取、数据格式转换、分组柱状图绘制,所有参数可根据你的实际表结构调整:

import pymysql
import pandas as pd
import matplotlib.pyplot as plt

# 配置matplotlib中文显示,避免中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 1. 连接MySQL拉取聚合后的数据,不需要手动录入任何数值
# 替换为你自己的数据库连接信息
db_conn = pymysql.connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="你的数据库密码",
    database="你的业务库名",
    charset="utf8mb4"
)

# SQL直接做聚合,减少本地计算量:按年、季度分组统计总销售额
query_sql = """
SELECT
    Year,
    Quarter,
    SUM(Sales) AS quarter_sales
FROM 你的销售数据表名
WHERE Year BETWEEN 1992 AND 2021
GROUP BY Year, Quarter
ORDER BY Year, Quarter
"""
# 直接读取为DataFrame结构
sales_df = pd.read_sql(query_sql, db_conn)
db_conn.close()

# 2. 转换为绘图需要的宽表结构:行=年份,列=4个季度,值=对应季度销售额
pivot_df = sales_df.pivot(index="Year", columns="Quarter", values="quarter_sales")
# 固定季度顺序为Q1-Q4,避免排序错乱
pivot_df = pivot_df.reindex(columns=[1, 2, 3, 4])

# 3. 绘制按年分组的季度柱状图
year_list = pivot_df.index.tolist()
year_count = len(year_list)
bar_width = 0.2
x_axis = range(year_count)

plt.figure(figsize=(18, 7))
# 循环绘制4个季度的柱形
for q_idx in range(4):
    plt.bar(
        [pos + q_idx * bar_width for pos in x_axis],
        pivot_df.iloc[:, q_idx],
        width=bar_width,
        label=f"第{q_idx+1}季度"
    )

# 配置X轴刻度,位置对齐每个年份分组的中点
plt.xticks(
    [pos + bar_width * 1.5 for pos in x_axis],
    year_list,
    rotation=45
)
plt.xlabel("年份")
plt.ylabel("销售额")
plt.title("1992-2021年各季度销售额分布")
plt.legend()
plt.tight_layout()
plt.show()

适配调整说明

  • 如果你的表中Quarter字段是字符串格式(比如存储为"Q1""第1季度"),只需要修改reindex里的列名匹配实际值即可,不需要改动其他逻辑
  • 如果需要保留月度粒度做其他分析,可以直接拉取全表原始数据到本地,再用pandas的groupby做年、季度聚合,逻辑和SQL聚合完全一致
  • 后续新增年份数据不需要修改绘图逻辑,只要调整SQL中的年份过滤范围,代码会自动适配X轴的年份分组数量
  • 如果需要调整柱形宽度、颜色、标签样式,直接修改plt.bar对应的参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:33:27