Après avoir effectué une groupby.sum()
sur un DataFrame
, je ne parviens pas à créer le tracé souhaité.
Comment créer une sous-parcelle (kind='bar'
) pour chaque Code
, où l’axe des x est le Month
et les barres sont ColA
et ColB
?
J'ai trouvé que la méthode unstack (level) fonctionnait parfaitement, ce qui présente l'avantage supplémentaire de ne pas nécessiter une connaissance a priori du nombre de codes.
df.unstack(level=0).plot(kind='bar', subplots=True)
Utilisation du DataFrame suivant ...
# using pandas version 0.14.1
from pandas import DataFrame
import pandas as pd
import matplotlib.pyplot as plt
data = {'ColB': {('A', 4): 3.0,
('C', 2): 0.0,
('B', 4): 51.0,
('B', 1): 0.0,
('C', 3): 0.0,
('B', 2): 7.0,
('Code', 'Month'): '',
('A', 3): 5.0,
('C', 1): 0.0,
('C', 4): 0.0,
('B', 3): 12.0},
'ColA': {('A', 4): 66.0,
('C', 2): 5.0,
('B', 4): 125.0,
('B', 1): 5.0,
('C', 3): 41.0,
('B', 2): 52.0,
('Code', 'Month'): '',
('A', 3): 22.0,
('C', 1): 14.0,
('C', 4): 51.0,
('B', 3): 122.0}}
df = DataFrame(data)
... vous pouvez tracer les éléments suivants (à l'aide d'une section transversale):
f, a = plt.subplots(3,1)
df.xs('A').plot(kind='bar',ax=a[0])
df.xs('B').plot(kind='bar',ax=a[1])
df.xs('C').plot(kind='bar',ax=a[2])
Un pour A, un pour B et un pour C, axe des abscisses: "Mois", les barres sont ColA et ColB. Peut-être que c'est ce que vous recherchez.