如何计算指标的同比变化?基于销售数据表的实现问询
计算同期销售额差值的实现方法
原始数据
| Time | Sales |
|---|---|
| 1/1/2020 | 30 |
| 2/2/2020 | 50 |
| 1/1/2021 | 100 |
| 2/2/2021 | 200 |
需求
生成如下结果,计算最新年份(2021年)与上一年(2020年)同期的销售额差值,并展示计算过程:
| Time | Sales Difference |
|---|---|
| 1/1/2021 | 100-30 = 70 |
| 2/2/2021 | 200-50 = 150 |
方法一:Excel操作步骤
- 格式化日期列:将
Time列设置为日期格式,方便提取同期标识。 - 添加辅助列:
- 插入
Month_Day列,用公式=TEXT(A2,"m/d")提取不含年份的日期(如1/1),用于匹配同期数据。 - 插入
Year列,用公式=YEAR(A2)提取对应年份。
- 插入
- 计算差值并展示过程:
针对2021年的每一行,在目标单元格输入以下公式(以C2单元格为例):
其中=B2&"-"&VLOOKUP(TEXT(A2,"m/d"),$A$2:$B$3,2,FALSE)&" = "&(B2-VLOOKUP(TEXT(A2,"m/d"),$A$2:$B$3,2,FALSE))$A$2:$B$3是2020年数据的范围,可根据实际数据调整。
方法二:Python(Pandas)实现
用Pandas可以批量处理这类同期对比计算:
import pandas as pd # 构造原始数据 df = pd.DataFrame({ 'Time': ['1/1/2020', '2/2/2020', '1/1/2021', '2/2/2021'], 'Sales': [30, 50, 100, 200] }) # 转换日期格式,拆分月份日期和年份 df['Time'] = pd.to_datetime(df['Time']) df['month_day'] = df['Time'].dt.strftime('%m/%d') df['year'] = df['Time'].dt.year # 按同期日期透视,计算差值 pivot_df = df.pivot(index='month_day', columns='year', values='Sales') pivot_df['diff_text'] = pivot_df[2021].astype(str) + "-" + pivot_df[2020].astype(str) + " = " + (pivot_df[2021]-pivot_df[2020]).astype(str) # 整理成目标格式 result = pivot_df.reset_index() result['Time'] = pd.to_datetime(result['month_day'] + '/2021') final_result = result[['Time', 'diff_text']].rename(columns={'diff_text': 'Sales Difference'}) print(final_result)
运行后会输出符合要求的结果表格。
内容的提问来源于stack exchange,提问作者Enri Gomes
相关产品推荐
相关产品推荐

