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

如何动态获取过去12个月销售数据以生成柱状图?

动态获取过去12个月销售数据并生成柱状图方案

核心思路

放弃固定日期过滤,基于当前日期动态计算过去12个月的时间区间,这样每日更新数据时,过滤逻辑会自动适配最新的时间范围。以下以Python pandas(数据处理)+ matplotlib(绘图)为例,给出完整实现步骤:

步骤1:数据预处理与时间转换

首先确保日期字段是可识别的datetime类型,否则无法进行时间过滤:

import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime

# 读取数据集(根据实际格式调整,比如Excel用pd.read_excel)
df = pd.read_csv('sales_data.csv')

# 将Order Date转换为datetime类型
df['Order Date'] = pd.to_datetime(df['Order Date'], format='%Y-%m-%d')

步骤2:动态计算时间范围

用当前日期往前推12个月,生成动态的起始日期:

# 获取当前日期,计算12个月前的日期(用pd.DateOffset处理闰年/不同月份天数更严谨)
current_date = datetime.today()
one_year_ago = current_date - pd.DateOffset(years=1)

步骤3:过滤数据并聚合统计

筛选出过去12个月的数据,再按Sub-Category分组统计销售数量:

# 过滤时间范围内的数据
filtered_df = df[df['Order Date'] >= one_year_ago]

# 按Sub-Category分组,统计销售数量(若需统计销售额总和,替换为sum('Sales'))
sales_stats = filtered_df.groupby('Sub-Category')['Order Date'].count().reset_index(name='Sales Quantity')

步骤4:生成自动更新的柱状图

基于统计结果绘制柱状图:

plt.figure(figsize=(10, 6))
plt.bar(sales_stats['Sub-Category'], sales_stats['Sales Quantity'], color='#2ecc71')
plt.title('过去12个月各Sub-Category销售数量')
plt.xlabel('产品子类别')
plt.ylabel('销售数量')
plt.xticks(rotation=45, ha='right')  # 旋转x轴标签避免重叠
plt.tight_layout()
plt.show()

数据库直接查询方案(如果数据存在数据库中)

如果你的数据存储在SQL数据库中,可以直接在查询语句中实现动态过滤,避免在代码中处理:

-- MySQL示例
SELECT `Sub-Category`, COUNT(*) AS `Sales Quantity`
FROM sales_table
WHERE `Order Date` >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
GROUP BY `Sub-Category`;

关键注意事项

  • 确保Order Date字段是标准日期格式,否则时间过滤会失效;
  • 使用pd.DateOffset(years=1)比timedelta(days=365)更准确,能自动处理闰年、2月等特殊情况;
  • 若需统计销售额而非销售数量,将聚合逻辑从count()改为sum('Sales')即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:55:19