Я пытаюсь создать 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')
error:Traceback (most recent call last): File "C:\Program Files\Python36\lastmainprogram.py", line 74, in moving_avg = pd.rolling_mean(ts_log,12) AttributeError: module 'pandas' has no attribute 'rolling_mean'






Я считаю, что нужно изменить:
moving_avg = pd.rolling_mean(ts_log,12)
к:
moving_avg = ts_log.rolling(12).mean()
потому что старый код версии pandas ниже pandas 0.18.0
Moving_avg = timeseries ["# Passengers"]. Rolling (window = 12) .mean () здесь временная серия dataframe имеет индекс как дату, а имя столбца #Passengers содержит количество пассажиров в соответствующие даты
Изменять:
moving_avg = pd.rolling_mean(ts_log,12)
к:
rolmean = pd.Series(timeseries).rolling(window=12).mean()
rolstd = pd.Series(timeseries).rolling(window=12).std()
Что такое таймсерии во втором блоке? Вы имеете в виду ts_log?
Это понадобится вам при обнаружении, чтобы вы могли добавить.
moving_std = ts_log.rolling(12).std()
Думаю, эта команда устарела с версии 0.18. Используйте операцию прокатки pandas.pydata.org/pandas-docs/stable/generated/…