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

如何基于周度数据高效计算YTD变动值?

需求说明

我有如下周度数据表格:

DateABCD
1/1/20224552
1/7/20223594
1/14/20224856
1/21/20224614

希望生成如下格式的YTD变动值表格,YTD变动值计算公式为:(当年最后一个值 - 当年第一个值) / 当年第一个值(基础百分比变动),求高效实现方案。

目标输出格式:

DateABCD
2022xxxx
2021xxxx
2020xxxx
2019xxxx

方案1:Excel实现(适合入门用户)

  1. 提取年份:新增一列(如E列),在E2单元格输入公式=YEAR(A2),下拉填充所有行,提取每条数据对应的年份。
  2. 获取每年首尾值:
    • 若数据已按日期排序,可直接用XLOOKUP函数提取:
      • 2022年A列第一个值:=XLOOKUP(2022,YEAR(A:A),A:A,,0,1)
      • 2022年A列最后一个值:=XLOOKUP(2022,YEAR(A:A),A:A,,0,-1)
    • 若数据未排序,使用「分类汇总」功能:先按年份分类,分别选择「最小值」「最大值」汇总A-D列,对应每年的首尾值。
  3. 计算变动率:对每个列代入公式(最后一个值 - 第一个值)/第一个值,将结果填入目标表格即可。

方案2:Python Pandas实现(适合批量/大数据处理)

如果需要处理多份数据或大样本量,用代码更高效:

  1. 读取并预处理数据:
import pandas as pd

# 读取数据(支持Excel/CSV格式,替换为你的文件路径)
df = pd.read_excel("周度数据.xlsx")
# 将日期列转为标准格式
df['Date'] = pd.to_datetime(df['Date'])
# 提取年份
df['Year'] = df['Date'].dt.year
  1. 分组获取首尾值并计算变动率:
# 按年份分组,取每组第一条(当年第一个值)和最后一条(当年最后一个值)
first_vals = df.groupby('Year')[['A','B','C','D']].nth(0)
last_vals = df.groupby('Year')[['A','B','C','D']].nth(-1)

# 计算YTD变动率并整理格式
ytd_result = (last_vals - first_vals) / first_vals
ytd_result = ytd_result.reset_index().rename(columns={'Year':'Date'})
  1. 输出结果:
# 打印表格
print(ytd_result)
# 导出为Excel文件
ytd_result.to_excel("YTD变动值.xlsx", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:31:05