Pandas 如何使用Pandas库中的rolling方法按照时间间隔计算滚动均值
在本文中,我们将介绍如何使用Pandas库中的rolling方法按照时间间隔计算滚动均值。rolling方法可以在DataFrame或Series对象上应用,它可以执行一系列滚动计算(如滚动均值、滚动方差和滚动标准差等)。
阅读更多:Pandas 教程
Pandas滚动算法:
Pandas的滚动算法是基于numexpr library的,它提供了高效的向量化计算。可以使用rolling方法来执行多种统计方法,例如rolling mean(滚动平均值)、rolling variance(滚动方差)和rolling standard deviation(滚动标准差)等。下面的代码演示了如何用rolling方法计算每个时间间隔的滚动平均值:
import pandas as pd
import numpy as np
series = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
index=pd.date_range('1/1/2000', periods=10, freq='D'))
print(series)
rolling_mean = series.rolling(window='5D').mean()
print(rolling_mean)
在上面的例子中,我们创建了一个Series,然后使用rolling方法和mean函数计算了5天滚动平均值。rolling方法的window参数指定滚动窗口的大小,可以使用整数或日期时间来指定滚动窗口的大小。例如,5D表示5天的滚动窗口,10H表示10个小时的滚动窗口。
pandas DataFrame中的滚动计算
在真实的应用中,我们更多的是将rolling方法应用于DataFrame对象。下面的代码演示了如何在DataFrame上应用rolling方法:
df = pd.DataFrame({'A':[1,2,3,4,5,6,7,8],
'B':[2,4,6,8,10,12,14,16],
'C':[3,4,5,6,7,8,9,10]})
df_rolling_mean = df.rolling(window=3).mean()
print(df_rolling_mean)
在上面的示例中,我们创建了一个包含三个列的DataFrame。然后使用rolling方法和mean函数计算了每列的滚动平均值(滚动窗口大小为3)。结果产生一个包含三个列的DataFrame对象。在应用rolling方法时,Pandas计算每个DataFrame最短的滚动窗口,然后对这些窗口应用滚动算法。换句话说,Pandas在数据框的列之间自动选择滚动窗口大小。你也可以指定不同的列具有不同的滚动窗口大小。
示例
下面的例子介绍了一些常见的示例:
例1:计算股票的20天移动平均线
import pandas_datareader.data as web
import datetime
# 获取 yahoo finance 的股票数据
symbol = 'AAPL'
start_date = datetime.datetime(2010, 1, 1)
end_date = datetime.datetime(2021, 1, 1)
df = web.DataReader(symbol, 'yahoo', start_date, end_date)
# 设定滚动窗口为20天,计算移动平均线
df['SMA20'] = df['Close'].rolling(window=20).mean()
# 输出数据
print(df.tail())
例2:按月计算销售额的滚动平均值
import pandas as pd
# 生成模拟数据
dates = pd.date_range('20210501', periods=90, freq='D')
sales = pd.DataFrame({'Sales':np.random.randint(1, 100, 90)}, index=dates)
# 将销售数据聚合为月
monthly_sales = sales.resample('M').sum()
## 计算滚动平均值
rolling_mean = monthly_sales.rolling(window=3).mean()
# 输出结果
print(rolling_mean)
在上面的示例中,我们首先生成90天的销售数据,然后将销售数据聚合为月份。然后将每个月的销售额计算出来,并用rolling方法计算每个月的滚动平均值(滚动窗口为3个月)。最后输出滚动平均值。
总结
Pandas的rolling方法可以用于Series和DataFrame对象,它可以执行多种滚动计算,例如滚动平均、滚动方差和滚动标准差等。可以使用整数或日期时间来指定滚动窗口大小。在应用rolling方法时,Pandas将自动计算每个DataFrame最短的滚动窗口,然后对这些窗口应用滚动算法。rolling方法在金融、经济学和统计学等领域都有广泛的应用,尤其是在时间序列数据的分析和预测方面。