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

如何基于Pandas DataFrame的每日资产价格计算周度平均价格?

如何用Pandas计算每日资产价格的周度滚动平均?

嘿,作为编程新手能想到用Pandas处理金融数据已经超棒啦!我来一步步带你实现这个需求——计算每7个连续交易日的平均价格(也就是滚动周度平均),结果可以存成单独的Series,也能直接加到原DataFrame里当新列。

第一步:确保你的数据是按时间排序的

这一步非常关键!如果你的DataFrame里的日期是乱序的,滚动平均的结果肯定会出错。假设你的DataFrame叫df,日期列是date,价格列是price,先执行这行代码排好序:

df = df.sort_values('date')

如果你的数据本身已经是按日期从早到晚排好的,这一步可以跳过,但养成排序的好习惯准没错~

第二步:用Pandas的rolling方法计算滚动平均

Pandas专门提供了rolling()函数来处理这种“滑动窗口”的计算,简直是为你的需求量身定做的!

方法1:直接在原DataFrame里新增周度平均列

一行代码就能搞定:

df['weekly_average_price'] = df['price'].rolling(window=7).mean()
  • window=7:表示我们要取连续7个数据的窗口
  • .mean():对窗口里的数据求平均值

方法2:把结果存成单独的Pandas Series

如果你不想修改原DataFrame,也可以把结果存成单独的Series:

weekly_avg_series = df['price'].rolling(window=7).mean()

关于结果里的NaN你需要知道

运行完上面的代码后,你会发现前6行的周度平均是NaN(空值)——这很正常!因为前6天的数据不够7个,没法计算平均值。从第7行开始,每一行的平均值都是它自己加上前面6天的价格的平均,也就是滚动的7天窗口。

给你一个可直接运行的例子

我写了一段模拟代码,你可以复制到Python里运行,直观看看效果:

import pandas as pd
import numpy as np

# 生成10天的模拟资产价格数据
dates = pd.date_range(start='2024-01-01', periods=10)
prices = np.random.randint(100, 200, size=10)  # 随机生成100-200之间的价格
df = pd.DataFrame({'交易日期': dates, '资产价格': prices})

# 确保按日期排序
df = df.sort_values('交易日期')

# 计算周度滚动平均并新增列
df['周度平均价格'] = df['资产价格'].rolling(window=7).mean()

# 打印结果看看
print(df)

运行后你会看到类似这样的输出:

交易日期  资产价格    周度平均价格
0 2024-01-01   123        NaN
1 2024-01-02   156        NaN
2 2024-01-03   189        NaN
3 2024-01-04   145        NaN
4 2024-01-05   167        NaN
5 2024-01-06   132        NaN
6 2024-01-07   178  155.714286
7 2024-01-08   190  165.285714
8 2024-01-09   111  159.142857
9 2024-01-10   143  152.285714

看,第7行(索引6)的平均值就是前7天价格的平均,第8行是第2到第8天的平均,以此类推~

额外小技巧:如果你想去掉空值

如果不想保留前6行的NaN,可以用dropna()方法把它们删掉:

# 去掉空值后的Series
clean_weekly_avg = df['周度平均价格'].dropna()

或者直接在计算时就处理:

df['周度平均价格'] = df['资产价格'].rolling(window=7).mean().dropna()

不过这样的话,原DataFrame的前6行的周度平均价格会变成NaN,只有后面的行有值——如果需要完整对齐原数据的话,还是保留NaN更合适。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:37:52