0
votes

Tracer l'histogramme pour la colonne en regroupant deux colonnes en pandas

Je suis nouveau sur les pandas et matplotlib. J'ai un fichier csv qui comprend l'année de 2012 à 2018. Pour chaque mois de l'année, j'ai des données de pluie. Je veux analyser par l'histogramme, quel mois de l'année a le maximum de précipitations. Voici mon ensemble de données.

import pandas as pd
import numpy as npy
import matplotlib.pyplot as plt
df2=pd.read_csv('Monthly.csv')
df2.groupby(['year','month'])['Rain'].count().plot(kind="bar",figsize=(20,10))

Je n'ai pas pu tracer avec l'histogramme, j'ai essayé de tracer avec la barre mais sans obtenir le résultat souhaité. Voici ce que j'ai essayé:

year    month  Temp Rain
2012    1       10  100
2012    2       20  200
2012    3       30  300
..      ..      ..  ..
2012    12      40  400
2013    1       50  300
2013    2       60  200
..      ..      ..  ..
2018    12      70  400

Voici ce que j'ai obtenu: entrez la description de l'image ici

Veuillez me suggérer une approche pour tracer un histogramme pour analyser les précipitations maximales au cours de quel mois regroupées par année.


2 commentaires

veuillez ne pas utiliser d'images pour vos données. Copiez et collez vos exemples de données afin que nous puissions les copier.


@Chris, merci pour votre suggestion. Je l'ai mis à jour.


3 Réponses :


1
votes

vous êtes fermé à la solution, j'écrirai: utilisez max () et non count ()

df2.groupby(['year','month'])['Rain'].max().plot(kind="bar",figsize=(20,10))


0 commentaires

1
votes

Vous ne voulez probablement pas voir le compter par groupe mais xxx

ou peut-être xxx


1 commentaires

une autre option: fig, ax = plt.subplots (figsize = (8,6)); df.groupby (['year', 'month']). sum () ['Rain']. unstack (). plot (ki‌ nd = 'bar', ax = ax) selon la façon dont vous veulent que le graphique ressemble.



0
votes

Premier groupe par année et par mois comme vous l'avez déjà fait, mais ne gardez que le maximum de précipitations.

series_df2.unstack().T.plot(kind='bar', subplots=False, layout=(2,2))

Ensuite, décompressez la série, transposez-la et tracez-la.

series_df2 = df2.groupby(['year','month'], sort=False)['Rain'].max()

Cela vous donnera une sortie qui ressemble à ceci pour vos exemples de données:

 entrez la description de l'image ici


0 commentaires