44 votes

Le module 'pandas' ne possède pas d'attribut 'rolling_mean'.

J'essaie de construire un ARIMA pour la détection des anomalies. J'ai besoin de trouver la moyenne mobile du graphique de la série chronologique. J'essaie d'utiliser pandas 0.23 pour cela.

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 (dernier appel le plus récent) : Fichier " C:\Program Fichiers \Python36\lastmainprogram.py ", ligne 74, dans moving_avg = pd.rolling_mean(ts_log,12) AttributeError : module 'pandas' has no attribute 'rolling_mean'.

1 votes

Cette commande est dépréciée depuis la 0.18, je crois. Utilisez l'opération de roulement pandas.pydata.org/pandas-docs/stable/generated/

111voto

jezrael Points 290608

Je crois qu'il faut changer :

moving_avg = pd.rolling_mean(ts_log,12)

à :

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

parce que l'ancienne version de pandas code ci-dessous pandas 0.18.0

0 votes

Moving_avg = timeseries["#Passengers"].rolling(window=12).mean() ici la dataframe timeseries a pour index la date, et la colonne #Passengers contient le nombre de passagers aux dates correspondantes.

9voto

Changez :

moving_avg = pd.rolling_mean(ts_log,12)

à :

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

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

0 votes

Qu'est-ce qu'une "série chronologique" dans votre deuxième bloc ? Voulez-vous dire 'ts_log' ?

0voto

Mehmet Ozden Points 1

Vous en aurez besoin dans votre détection pour pouvoir ajouter.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X