Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment calculer une moyenne mobile chez les pandas



Une moyenne mobile est simplement la moyenne d’un certain nombre de périodes précédentes dans une série chronologique.

Pour calculer la moyenne glissante d’une ou plusieurs colonnes dans un DataFrame pandas, nous pouvons utiliser la syntaxe suivante :

df['column_name'].rolling(rolling_window).mean()

Ce tutoriel fournit plusieurs exemples d’utilisation pratique de cette fonction.

Exemple : calculer la moyenne mobile chez les pandas

Supposons que nous ayons le DataFrame pandas suivant :

import numpy as np
import pandas as pd

#make this example reproducible
np.random.seed(0)

#create dataset
period = np.arange(1, 101, 1)
leads = np.random.uniform(1, 20, 100)
sales = 60 + 2*period + np.random.normal(loc=0, scale=.5*period, size=100)
df = pd.DataFrame({'period': period, 'leads': leads, 'sales': sales})

#view first 10 rows
df.head(10)

   period	    leads	    sales
0	1	11.427457	61.417425
1	2	14.588598	64.900826
2	3	12.452504	66.698494
3	4	11.352780	64.927513
4	5	9.049441	73.720630
5	6	13.271988	77.687668
6	7	9.314157	78.125728
7	8	17.943687	75.280301
8	9	19.309592	73.181613
9	10	8.285389	85.272259

Nous pouvons utiliser la syntaxe suivante pour créer une nouvelle colonne contenant la moyenne mobile des « ventes » pour les 5 périodes précédentes :

#find rolling mean of previous 5 sales periods
df['rolling_sales_5'] = df['sales'].rolling(5).mean()

#view first 10 rows
df.head(10)

	period	    leads	    sales	rolling_sales_5
0	1	11.427457	61.417425	NaN
1	2	14.588598	64.900826	NaN
2	3	12.452504	66.698494	NaN
3	4	11.352780	64.927513	NaN
4	5	9.049441	73.720630	66.332978
5	6	13.271988	77.687668	69.587026
6	7	9.314157	78.125728	72.232007
7	8	17.943687	75.280301	73.948368
8	9	19.309592	73.181613	75.599188
9	10	8.285389	85.272259	77.909514

Nous pouvons vérifier manuellement que la moyenne glissante des ventes affichée pour la période 5 est la moyenne des 5 périodes précédentes :

Moyenne mobile à la période 5 : (61,417+64,900+66,698+64,927+73,720)/5 = 66,33

Nous pouvons utiliser une syntaxe similaire pour calculer la moyenne mobile de plusieurs colonnes :

#find rolling mean of previous 5 leads periods 
df['rolling_leads_5'] = df['leads'].rolling(5).mean() 

#find rolling mean of previous 5 leads periods
df['rolling_sales_5'] = df['sales'].rolling(5).mean()

#view first 10 rows
df.head(10)

	period	    leads	    sales	rolling_sales_5	 rolling_leads_5
0	1	11.427457	61.417425	NaN	NaN
1	2	14.588598	64.900826	NaN	NaN
2	3	12.452504	66.698494	NaN	NaN
3	4	11.352780	64.927513	NaN	NaN
4	5	9.049441	73.720630	66.332978	 11.774156
5	6	13.271988	77.687668	69.587026	 12.143062
6	7	9.314157	78.125728	72.232007	 11.088174
7	8	17.943687	75.280301	73.948368	 12.186411
8	9	19.309592	73.181613	75.599188	 13.777773
9	10	8.285389	85.272259	77.909514	 13.624963

Nous pouvons également créer un tracé linéaire rapide à l’aide de Matplotlib pour visualiser les ventes brutes par rapport à la moyenne mobile des ventes :

import matplotlib.pyplot as plt
plt.plot(df['rolling_sales_5'], label='Rolling Mean')
plt.plot(df['sales'], label='Raw Data')
plt.legend()
plt.ylabel('Sales')
plt.xlabel('Period')
plt.show()

Tracer la moyenne mobile chez les pandas en Python

La ligne bleue affiche la moyenne mobile des ventes sur 5 périodes et la ligne orange affiche les données brutes des ventes.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :

Comment calculer la corrélation glissante chez les pandas
Comment calculer la moyenne des colonnes dans Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *