You need to enable JavaScript to run this app. 如何在pandas中获取total_percentage_sale列的滞后月度平均值
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas中获取total_percentage_sale列的滞后月度平均值

计算total_percentage_sale滞后月度平均值的操作方法

首先明确:下述方案默认计算的是单月滞后1期的平均值,即当月对应上一个自然月的total_percentage_sale全月平均占比,若需滞后N个月仅调整平移步长即可。

操作步骤

  • 数据预处理:将date列转换为标准日期格式,提取「年月」组合字段作为分组依据,避免不同年份同月份数据混淆。
  • 计算月度均值:按年月字段分组,对total_percentage_sale列求平均值,得到每个自然月的平均销售额占比。
  • 生成滞后值:将月度均值序列整体向下平移1行,得到每个月份对应的上一月平均占比,即所需的滞后月度平均值。
  • 关联回原数据集:把滞后后的月度平均值按年月匹配回原始明细数据,同月份的所有商品行都会关联到对应上一月的滞后均值。

代码示例

Python Pandas 实现

import pandas as pd

# 读取数据集,替换为你的实际数据路径
df = pd.read_csv("your_data_path.csv")

# 日期格式处理,去掉样例中date末尾的多余点号
df['date'] = pd.to_datetime(df['date'].str.strip('.'))
# 提取年月分组字段
df['year_month'] = df['date'].dt.to_period('M')

# 计算每月平均销售额占比
monthly_avg = df.groupby('year_month')['total_percentage_sale'].mean().reset_index()
monthly_avg.rename(columns={'total_percentage_sale': 'current_month_avg'}, inplace=True)

# 生成滞后1个月的平均值
monthly_avg['lag_1_month_avg'] = monthly_avg['current_month_avg'].shift(1)

# 关联回原始数据集
df = df.merge(monthly_avg[['year_month', 'lag_1_month_avg']], on='year_month', how='left')

SQL 实现(基于MySQL语法)

WITH monthly_avg AS (
    -- 先计算每个月的平均销售额占比
    SELECT 
        DATE_FORMAT(`date`, '%Y-%m') AS year_month,
        AVG(total_percentage_sale) AS current_month_avg
    FROM your_table_name
    GROUP BY DATE_FORMAT(`date`, '%Y-%m')
),
lag_monthly_avg AS (
    -- 用LAG窗口函数生成滞后1个月的均值
    SELECT 
        year_month,
        LAG(current_month_avg, 1) OVER (ORDER BY year_month) AS lag_1_month_avg
    FROM monthly_avg
)
-- 关联回原表得到最终结果
SELECT 
    t.*,
    l.lag_1_month_avg
FROM your_table_name t
LEFT JOIN lag_monthly_avg l 
ON DATE_FORMAT(t.`date`, '%Y-%m') = l.year_month

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 05:57:00