Comment rééchantillonner les données de séries chronologiques en Python (avec exemples)



Rééchantillonner les données de séries chronologiques signifie résumer ou agréger les données sur une nouvelle période.

Nous pouvons utiliser la syntaxe de base suivante pour rééchantillonner les données de séries chronologiques en Python :

#find sum of values in column1 by month
weekly_df['column1'] = df['column1'].resample('M').sum()

#find mean of values in column1 by week
weekly_df['column1'] = df['column1'].resample('W').mean() 

Notez que nous pouvons rééchantillonner les données de séries chronologiques selon différentes périodes, notamment :

  • S : Secondes
  • min : Minutes
  • H : Horaires
  • J : Jour
  • W : Semaine
  • M : Mois
  • Q : Trimestre
  • A : Année

L’exemple suivant montre comment rééchantillonner les données de séries chronologiques dans la pratique.

Exemple : rééchantillonner les données de séries chronologiques en Python

Supposons que nous ayons le DataFrame pandas suivant qui montre le total des ventes réalisées chaque heure par une entreprise sur une période d’un an :

import pandas as pd
import numpy as np

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

#create DataFrame with hourly index
df = pd.DataFrame(index=pd.date_range('2020-01-06', '2020-12-27', freq='h'))

#add column to show sales by hour
df['sales'] = np.random.randint(low=0, high=20, size=len(df.index))

#view first five rows of DataFrame
df.head()

	             sales
2020-01-06 00:00:00	12
2020-01-06 01:00:00	15
2020-01-06 02:00:00	0
2020-01-06 03:00:00	3
2020-01-06 04:00:00	3

Si nous créons un tracé linéaire pour visualiser les données de ventes, il ressemblerait à ceci :

import matplotlib.pyplot as plt

#plot time series data
plt.plot(df.index, df.sales, linewidth=3)

Ce graphique est difficile à interpréter, nous pouvons donc résumer les données de ventes par semaine :

#create new DataFrame
weekly_df = pd.DataFrame()

#create 'sales' column that summarizes total sales by week
weekly_df['sales'] = df['sales'].resample('W').sum()

#view first five rows of DataFrame
weekly_df.head()

                sales
2020-01-12	1519
2020-01-19	1589
2020-01-26	1540
2020-02-02	1562
2020-02-09	1614

Ce nouveau DataFrame montre la somme des ventes par semaine.

Nous pouvons ensuite créer un tracé de série chronologique en utilisant ces données hebdomadaires :

import matplotlib.pyplot as plt

#plot weekly sales data
plt.plot(weekly_df.index, weekly_df.sales, linewidth=3)

Ce graphique est beaucoup plus facile à lire car nous ne représentons que les données de ventes pour 51 semaines individuelles, par opposition aux données de ventes pour 8 545 heures individuelles dans le premier exemple.

Remarque : Dans cet exemple, nous avons résumé les données de ventes par semaine, mais nous pourrions également les résumer par mois ou par trimestre si nous souhaitons tracer encore moins de points de données.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes en Python :

Comment tracer une série chronologique dans Matplotlib
Comment tracer une série chronologique dans Seaborn
Comment calculer MAPE de séries chronologiques en Python

Ajouter un commentaire

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