Bonjour,
dans le cadre de mon projet, j’ai mis la variable Datetime d’un DataFrame en index et voulu réalisé un graphique d’une variable consommation pendant une période de l’année… et ensuite sur ce même graphique la même variable mais l’année précédente.
Je suis arrivée à un résultat mais d’une manière fort peu orthodoxe (j’ai supprimé les abscisses correspondant aux données temporelles en passant par la méthode .values():
Existe-t-il un moyen simple d’avoir le mois et le jour en abscisses dans un graphique Matplotlib et pouvoir tracer différents graphiques suivant les années ? Svp…
Le plus simple dans ce cas est d’éxtraire les jours et mois depuis la colonne Date au format pd.to_datetime.
Par exemple:
# Fonction to_datetime
df['date'] = pd.to_datetime(df['date'])
# Extraction d'informations depuis la variable de date
# Mois
df["month"] = df['date'].dt.month
# Jour de la semaine
df["weekday"] = df['date'].dt.weekday
# Weekend
df["weekend"] = np.where(df["weekday"].isin([5,6]), 1, 0)
# Jour du mois
df["day"] = df['date'].dt.day
# Heure
df["hour"] = df['date'].dt.hour
Puis de sélectionner les colonnes correspondantes dans le nouveau graphique
Bonjour Laurène,
mon problème n’est pas tant de sélectionner les données mais d’arriver à faire des courbes séparées au niveau des années…
Par exemple, si je fais :
for annee in range(2013, 2023):
plt.plot(elec_IdF[elec_IdF_periode & (elec_IdF['annee'] == annee)]['cons'])
j’obtiens :
Les courbes sont présentes mais tassées par années, au lieu de se superposer…
Dans la première image que j’ai créée, j’ai recréé manuellement les “labels” de l’axe des abscisses, je ne sais pas comment faire pour que Matplotlib le fasse automatiquement.
Vous souhaiteriez donc avoir les mois de janvier à décembre en abscisse et une courbe pour chaque année?
Dans ce cas il vous suffit d’instancier plusieurs plt.plot() dans une même figure.