2013-08-28 16 views
7

Ok, quindi ho un dataframe che contiene dati di timeseries che ha un indice multilinea per ogni colonna. Ecco un esempio di come appaiono i dati ed è in formato csv. Il caricamento dei dati non è un problema qui.Boxplot con gruppo di Panda

enter image description here

Quello che voglio fare è quello di essere in grado di creare un grafico a scatole con questi dati raggruppati in base alle diverse catagories in una linea specifica del multiinex. Per esempio, se dovessi raggruppare per "SPECIE", avrei i gruppi, "aq", "gr", "mix", "sed" e una casella per ogni gruppo in un momento specifico nelle serie temporali.

Ho provato questo:

grouped = data['2013-08-17'].groupby(axis=1, level='SPECIES') 
grouped.boxplot() 

ma mi dà un grafico a scatole (linea piatta) per ogni punto nel gruppo, piuttosto che per il set raggruppato. C'è un modo semplice per farlo? Non ho problemi di raggruppamento in quanto posso aggregare i gruppi nel modo desiderato, ma non sono sicuro di cosa sto facendo male con questo boxplot.

Qualsiasi aiuto sarebbe apprezzato.

risposta

10

penso ho capito, forse questo sarà utile a qualcuno:

grouped = data['2013-08-17'].groupby(axis=1, level='SPECIES').T 
grouped.boxplot() 

uscita Fondamentalmente groupby doveva essere recepita in modo che il grafico a scatole mostrato il diritto raggruppamento:

enter image description here

1

Dovrebbe funzionare nella versione 0.16:

data['2013-08-17'].boxplot(by='SPECIES') 
12

di questo codice:

data['2013-08-17'].boxplot(by='SPECIES') 

non funziona, come boxplot è una funzione per un dataframe e non una serie.

Mentre in Panda> 0.18.1 la funzione boxplot ha l'argomento columns che definisce da quale colonna vengono prelevati i dati.

Così

data.boxplot(column='2013-08-17',by='SPECIES') 

dovrebbe restituire il risultato desiderato.

Problemi correlati