看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)在时间序列分析中,经常需要计算指标的累计平均值。现有某公司连续6个月的销售额数据,需要分析销售额的累计平均增长情况。
源数据:
import pandas as pd
df = pd.DataFrame({
'month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
'sales': [100, 120, 130, 110, 140, 160]
})
print("原始数据:")
print(df)
输出结果:
原始数据:
month sales
0 Jan 100
1 Feb 120
2 Mar 130
3 Apr 110
4 May 140
5 Jun 160
要求:
期望输出:
month sales cumulative_avg
0 Jan 100 100.00
1 Feb 120 110.00
2 Mar 130 116.67
3 Apr 110 115.00
4 May 140 120.00
5 Jun 160 126.67
代码如下:
(
df.assign(cumulative_avg=lambda x: x['sales']
.expanding()
.mean()
.round(2)
)
)
输出结果:
month sales cumulative_avg
0 Jan 100 100.00
1 Feb 120 110.00
2 Mar 130 116.67
3 Apr 110 115.00
4 May 140 120.00
5 Jun 160 126.67
代码逻辑:首先使用expanding()方法创建扩展窗口对象,该窗口从时间序列起始点开始并逐步包含所有历史数据;然后调用mean()计算每个时点的累计平均值;通过round(2)将结果保留两位小数;最后使用assign()方法将计算结果作为新列添加到原DataFrame中,实现链式调用。
(完)
更新时间:2025-09-21 22:19:44 标签:pandas python 扩展窗口 增长率