multiindex - pandas python tutorial español
Pandas trazando con multi-índice (2)
Después de realizar un groupby.sum()
en un DataFrame
, tengo problemas para tratar de crear mi trama prevista.
¿Cómo puedo crear una subtrama ( kind=''bar''
) para cada Code
, donde el eje x es el Month
y las barras son ColA
y ColB
?
Descubrí que el método de desagrupamiento (nivel) funciona a la perfección, lo que tiene el beneficio adicional de no necesitar un conocimiento a priori de cuántos códigos hay.
df.unstack(level=0).plot(kind=''bar'', subplots=True)
Usando el siguiente DataFrame ...
# 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)
... puedes trazar lo siguiente (usando una sección transversal):
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])
Uno para A, uno para B y uno para C, eje x: ''Mes'', las barras son ColA y ColB. Tal vez esto es lo que estás buscando.