模块'pandas'没有属性'rolling_mean'。

55

我正在尝试构建一个用于异常检测的ARIMA模型。我需要找到时间序列图的移动平均数,我打算使用pandas 0.23进行此操作。

import pandas as pd
import numpy as np
from statsmodels.tsa.stattools import adfuller
import matplotlib.pylab as plt
from matplotlib.pylab import rcParams
rcParams['figure.figsize'] = 15, 6

dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m')
data = pd.read_csv('AirPassengers.csv', parse_dates=['Month'], index_col='Month',date_parser=dateparse)

data.index
ts = data['#Passengers']
ts.head(10)

plt.plot(ts)
ts_log = np.log(ts)
plt.plot(ts_log)
moving_avg = pd.rolling_mean(ts_log,12)  # here is the error

pd.rolling_mean  
plt.plot(ts_log)
plt.plot(moving_avg, color='red') 
错误:Traceback(最近的调用最先)文件“C:\ Program Files \ Python36 \ lastmainprogram.py”的第74行中, moving_avg = pd.rolling_mean(ts_log,12)AttributeError:模块“pandas”没有属性“rolling_mean”

1
这个命令自0.18版本以来已经被弃用了。我认为你应该使用滚动操作 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rolling.html - Avision
3个回答

121

我相信需要改变:

moving_avg = pd.rolling_mean(ts_log,12)

致:

moving_avg = ts_log.rolling(12).mean()

由于旧版本的pandas代码低于pandas 0.18.0


移动平均 = timeseries["#Passengers"].rolling(window=12).mean()这里的数据帧 timeseries 具有日期索引,列名 #Passengers 具有相应日期中乘客数量的计数 - Sourav Saha

14

改变:

moving_avg = pd.rolling_mean(ts_log,12)

致:

rolmean = pd.Series(timeseries).rolling(window=12).mean()

rolstd = pd.Series(timeseries).rolling(window=12).std()

你第二个块中的“timeseries”是什么意思?你是指“ts_log”吗? - Papa Delta

0

在你的检测中,你需要这个以便添加。

moving_std = ts_log.rolling(12).std()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接