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

Python如何基于日环比增长率推算每日初始值并计算近似同比增速

解决方案

核心实现逻辑

日环比增长率dod_change的计算公式为 当日值 / 前一日值 - 1,推导可得当日值 = 前一日值 * (1 + dod_change),我们可以直接用pandas内置的累计乘积函数cumprod()高效计算所有日期的近似指标值,无需逐行循环计算。

完整可运行代码

import pandas as pd
import numpy as np

# 你提供的日同比计算函数
def calculate_daily_yoy(x):
    do = pd.DateOffset(years = 1)
    x_yoy = x.pct_change(freq = do)
    return pd.DataFrame(x_yoy, columns=x.columns)

# 生成测试样例数据
np.random.seed(2021)
df = pd.DataFrame({'date': pd.date_range('2015', periods = 720, freq = 'D'), 
                   'dod_change1': np.random.uniform(-0.5, 0.5, size = 720), 
                   'dod_change2': np.random.uniform(-0.1, 0.1, size = 720)})

# 计算每日近似指标值
initial_base_value = 100  # 基期(日期序列首日的前一天,本案例为2014-12-31)的初始值
df = df.set_index('date')
# 遍历所有环比列生成对应的指标值列
for change_col in ['dod_change1', 'dod_change2']:
    value_col = change_col.replace('dod_change', 'value')
    df[value_col] = initial_base_value * (1 + df[change_col]).cumprod()

# 计算日同比
yoy_result = calculate_daily_yoy(df[['value1', 'value2']])
print(yoy_result)

结果说明

运行代码后yoy_result即为你需要的日同比增长率结果,df中的value1、value2列即为你要求的各日期近似初始值。
该方法的时间复杂度为O(n),处理百万行级数据也能保持很高的运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:48:01