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

如何衡量数据新增变化?问询每周平均新增数据量计算方法

解决每周平均新增数据量/增长率计算问题

首先要明确你的data列代表的是每周新增量还是累计数据量——这是问题的核心:

1. 如果data是累计数据量(你可能写错了示例数据)

你描述的“8月25日新增31,9月1日又新增31,相当于100%增长”,对应的累计数据应该是[31, 62, 93](而非全31)。这种情况下:

计算每周新增绝对量

用diff()直接计算相邻周的累计差值,就是当周新增量:

import pandas as pd

d = {'date':['2019-08-25', '2019-09-01', '2019-09-08'],
     'data':[31, 62, 93]}
df_sample = pd.DataFrame(data=d)

# 计算每周新增量
df_sample['weekly_increase'] = df_sample['data'].diff()

计算每周增长率及平均增长率

用pct_change()计算累计数据的环比增长率,再求平均:

# 计算每周增长率
df_sample['growth_rate'] = df_sample['data'].pct_change()

# 算术平均增长率
avg_growth_arithmetic = df_sample['growth_rate'].mean()

# 几何平均增长率(更适合复利增长场景,结果更准确)
n = len(df_sample)
avg_growth_geometric = (df_sample['data'].iloc[-1] / df_sample['data'].iloc[0]) ** (1/(n-1)) - 1

2. 如果data确实是每周新增量(示例数据正确)

此时你的data列数值全为31,说明每周新增量没有变化,diff()和pct_change()返回0是正确结果。如果你的需求是计算累计数据的平均增长,需要先转换为累计值再计算:

import pandas as pd

d = {'date':['2019-08-25', '2019-09-01', '2019-09-08'],
     'data':[31, 31, 31]}
df_sample = pd.DataFrame(data=d)

# 计算累计数据量
df_sample['cumulative_data'] = df_sample['data'].cumsum()

# 计算累计数据的增长率
df_sample['growth_rate'] = df_sample['cumulative_data'].pct_change()

# 算术平均增长率
avg_growth_arithmetic = df_sample['growth_rate'].mean()

# 几何平均增长率
n = len(df_sample)
avg_growth_geometric = (df_sample['cumulative_data'].iloc[-1] / df_sample['cumulative_data'].iloc[0]) ** (1/(n-1)) - 1

为什么你的原方法返回0?

因为你提供的示例数据中data列数值完全相同,diff()计算的是相邻值的差值(31-31=0),pct_change()计算的是相对变化率((31-31)/31=0),这是符合逻辑的结果,不符合预期是因为你混淆了“新增量”和“累计量”的概念。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:06:13