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

如何按region与profile分组,为每组生成sales与forecast折线图?

解决方案

核心思路

通过**双重分组(region + profile)**遍历数据集,为每个组合单独生成折线图,确保每个图表只展示对应分组的sales和forecast随day的变化趋势。

代码实现(Python + Matplotlib/Pandas)

假设你的数据集已加载为Pandas DataFrame df,可直接用以下代码实现需求:

import pandas as pd
import matplotlib.pyplot as plt

# 确保日期字段格式正确(若原始数据为字符串格式)
df['day'] = pd.to_datetime(df['day'])

# 按region和profile双重分组,遍历每个组合
for (region, profile), group in df.groupby(['region', 'profile']):
    # 创建独立画布,避免图表重叠
    plt.figure(figsize=(10, 6))
    
    # 绘制实际销量和预测值折线
    plt.plot(group['day'], group['sales'], label='Actual Sales', marker='o', linestyle='-')
    plt.plot(group['day'], group['forecast'], label='Forecast', marker='s', linestyle='--')
    
    # 配置图表样式
    plt.title(f'Sales vs Forecast: {region}-{profile.upper()}')
    plt.xlabel('Date')
    plt.ylabel('Amount')
    plt.legend()
    plt.xticks(rotation=45)
    plt.tight_layout()  # 自动调整布局,防止标签截断
    
    # 可选:保存图表到本地,文件名包含分组信息
    plt.savefig(f'{region}_{profile}_sales_forecast.png')
    # 显示当前图表
    plt.show()

代码说明

  • groupby(['region', 'profile']):实现双重分组,精准定位每个region+profile的组合
  • 每个分组循环创建独立画布plt.figure(),保证图表互不干扰
  • profile.upper()让标题展示更规范(如显示为BIG而非big)
  • 可选的plt.savefig()可自动保存所有图表,方便批量查看

替代方案(Plotly交互式图表)

如果需要支持缩放、悬停查看数据的交互式图表,可使用Plotly:

import plotly.express as px

for (region, profile), group in df.groupby(['region', 'profile']):
    fig = px.line(group, x='day', y=['sales', 'forecast'],
                  title=f'Sales vs Forecast: {region}-{profile.upper()}',
                  labels={'value': 'Amount', 'variable': 'Data Type'})
    fig.show()
    # 保存为HTML交互式文件
    fig.write_html(f'{region}_{profile}_sales_forecast.html')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:01:55