web-dev-qa-db-fra.com

Graphique à barres de tracé de Pandas DataFrame

En supposant que j'ai un DataFrame qui ressemble à ceci:

Hour | V1 | V2 | A1 | A2
 0   | 15 | 13 | 25 | 37  
 1   | 26 | 52 | 21 | 45 
 2   | 18 | 45 | 45 | 25 
 3   | 65 | 38 | 98 | 14

J'essaie de créer un graphique en barres pour comparer les colonnes V1 et V2 par le Hour. Quand je fais:

import matplotlib.pyplot as plt
ax = df.plot(kind='bar', title ="V comp",figsize=(15,10),legend=True, fontsize=12)
ax.set_xlabel("Hour",fontsize=12)
ax.set_ylabel("V",fontsize=12)

Je reçois un tracé et une légende avec les valeurs et les noms de toutes les colonnes. Comment puis-je modifier mon code afin que le tracé et la légende n'affiche que les colonnes V1 et V2

32
Alfonso

Pour tracer uniquement une sélection de vos colonnes, vous pouvez sélectionner les colonnes qui vous intéressent en transmettant une liste à l'opérateur indice:

ax = df[['V1','V2']].plot(kind='bar', title ="V comp", figsize=(15, 10), legend=True, fontsize=12)

Ce que vous avez essayé, c'était df['V1','V2'] cela va générer un KeyError car aucune colonne n’existe correctement avec cette étiquette, bien que cela ait l’air drôle au début, vous devez considérer que vous passez une liste d’où les doubles crochets [[]].

import matplotlib.pyplot as plt
ax = df[['V1','V2']].plot(kind='bar', title ="V comp", figsize=(15, 10), legend=True, fontsize=12)
ax.set_xlabel("Hour", fontsize=12)
ax.set_ylabel("V", fontsize=12)
plt.show()

enter image description here

58
EdChum