2014-10-07 26 views
5

Diciamo che ho il seguente tabella pivot (questo è quello creato in the documentation):Tracciare da tabella pivot utilizzando Pandas

In [8]: tuples = list(zip(*[['bar', 'bar', 'baz', 'baz', 
...:     'foo', 'foo', 'qux', 'qux'], 
...:    ['one', 'two', 'one', 'two', 
...:     'one', 'two', 'one', 'two']])) 
...: 

In [9]: index = MultiIndex.from_tuples(tuples, names=['first', 'second']) 

In [10]: df = DataFrame(randn(8, 2), index=index, columns=['A', 'B']) 

In [11]: df2 = df[:4] 

In [12]: df2 
Out[12]: 
        A   B 
first second      
bar one  0.721555 -0.706771 
     two -1.039575 0.271860 
baz one -0.424972 0.567020 
     two  0.276232 -1.087401 

Come posso utilizzare questa tabella per tracciare sia 'bar' e 'baz 'sullo stesso grafico con gli assi (secondo, A) (cioè voglio creare un grafico con i punti (uno, 0,72), (due, -1,039), (uno, -0,42), (due, 0,276), dove i primi due punti sono tracciati in un colore diverso rispetto agli ultimi due).

Ho provato utilizzando

df2[[0]].plot() 

ma questo trame i punti in sequenza su l'asse x in modo che siano ordinate ((bar, uno), 0,721), ((bar, due), -1,039), ecc, piuttosto che avere i due punti "uno" e i due "due" punti condividono un asse verticale.

risposta

4

Ok, l'ho capito. La chiave è stata prima di scollegare i dati:

import matplotlib.pyplot as plt 

t=df2.unstack(level=0) 
plt.plot(t[[0]], color='red') 
plt.plot(t[[1]], color='blue') 
plt.xticks(range(2), ['one','two'], size='small') 

plt.show() 
Problemi correlati