Un type spécial de variable catégorielle est celui qui, au lieu de prendre les étiquettes traditionnelles, comme la couleur (bleu, rouge) ou la ville (Paris, Montpellier), prend les dates et/ou l’heure comme valeurs. Par exemple, la date de naissance (“29-08-1997”, “12-01-2015”), ou la date d’application (“2010-Dec”, “2005-Mars”).
Les variables de date et heure peuvent contenir des dates uniquement, l’heure uniquement, ou la date et l’heure.
Nous ne travaillons généralement pas avec une variable date-heure dans son format brut car :
- Les variables de date contiennent un grand nombre de catégories différentes
- Nous pouvons extraire beaucoup plus d’informations des variables date-heure en les prétraitant correctement
En outre, les variables de date contiennent souvent des dates qui n’étaient pas présentes dans l’ensemble de données utilisé pour former le modèle d’apprentissage machine. En fait, les variables de date contiendront généralement des dates placées dans le futur, par rapport aux dates de l’ensemble de données de formation. Par conséquent, le modèle d’apprentissage machine ne saura pas quoi en faire, car il ne les a jamais vues pendant la formation.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_csv('../exportfeature.csv',sep=";",encoding='ANSI')
data.head()
# pandas attribue le type "objet" lors de la lecture des dates
# et les considère comme des chaines.
# Voyons voir
data[['date']].dtypes
date object
dtype: object
La date est exprimée sous forme d’objets. Par conséquent, les traitements pandas les traiteront comme des chaînes de caractères ou des variables catégorielles.
Pour que pandas puisse les traiter comme des dates, nous devons les reformuler au format date-heure. Voir ci-dessous.
# maintenant, analysons les dates, actuellement codées sous forme de chaînes de caractères, au format date-heure
# cela nous permettra de faire une analyse par la suite
data['date_dt'] = pd.to_datetime(data['date'])
data[['date', 'date_dt']].head()
date date_dt
0 01-01-2016 2016-01-01
1 01-01-2016 2016-01-01
2 01-01-2016 2016-01-01
3 01-01-2016 2016-01-01
4 01-01-2016 2016-01-01
# extrayons le mois et l'année de la variable date
data['mois'] = data['date_dt'].dt.month
data['an'] = data['date_dt'].dt.year
# regardons les montants cumulés par mois et année en fonction de la place
fig = data.groupby(['an','mois', 'place'])['rapport'].sum().unstack().plot(
figsize=(14, 8), linewidth=2)
fig.set_title('Montants gagnés cumulés par mois')
fig.set_ylabel('Montants')
# On peut aussi essayer de trouver quel est le moins qui rapporte le plus de gains
fig = data.groupby(['mois', 'place'])['rapport'].sum().unstack().plot(
figsize=(14, 8), linewidth=2)
fig.set_title('Montants gagnés cumulés par mois')
fig.set_ylabel('Montants')
Il semble que les mois de juillet et août soient plus profitables que les autres mois.