Le df original est comme ci-dessous:
Hour Count
0 15
0 0
0 0
0 17
0 18
0 12
1 55
1 0
1 0
1 0
1 53
1 51
...
Je parcourais ce df heure par heure et supprimais Count = 0 à cette heure, puis dessinais une boîte à moustaches de Count à cette heure. Ensuite, je me suis retrouvé avec 24 graphiques.
Puis-je mettre ces 24 boîtes à moustaches sur le même graphique lors d'une boucle? Par exemple, obtenir une sortie df2 comme ci-dessous et utiliser plt.boxplot(df2), mais je ne sais pas si cela provoquera une erreur.
Hour=0 Hour=1...
0 15 55
1 17 53
2 18 51
3 12 Nan
Une autre chose est qu'après avoir supprimé 0, chaque heure a une longueur de données différente dans Count. Comment ajouter ces données et obtenir un df2 comme ci-dessus ?
Vous pouvez utiliser le code ci-dessous pour df d'origine :
df = pd.DataFrame({
'Hour': {0:1, 1:1, 2:1, 3:1, 4:1, 5:1, 6:2, 7:2, 8:2, 9:2, 10:2, 11:2},
'Count': {0:15, 1:0, 2:0, 3:17, 4:18, 5:12, 6:55, 7:0, 8:0, 9:0, 10:53, 11:51}})
Voici le code pour créer des boîtes à moustaches horaires :
for i in range(2):
table1 = df[df['Hour'] == i]
table2 = table1[table1['large_cnt']!= 0]
fig = plt.figure(1, figsize=(9, 6))
plt.boxplot(table2['large_cnt'])
plt.show()
Solution du problème
Une option consiste à pivot
filtrer le DataFrame et à tracerboxplot
:
df.query('Count!=0').assign(i=lambda x: x.groupby('Hour').cumcount()).pivot('i', 'Hour', 'Count').boxplot();
Aucun commentaire:
Enregistrer un commentaire