2016-08-06 21 views
5

Ich habe einen Pandas Datenrahmen, die wie folgt aussieht:Seaborn mehrere barplots

class  men  woman children 
0 first 0.91468 0.667971 0.660562 
1 second 0.30012 0.329380 0.882608 
2 third 0.11899 0.189747 0.121259 

Wie würde ich ein Grundstück mit Seaborn schaffen, der so aussieht? Muss ich meine Daten irgendwie neu anordnen?

Antwort

12

Ja müssen Sie die Datenrahmen neu zu gestalten:

df = pd.melt(df, id_vars="class", var_name="sex", value_name="survival rate") 
df 
Out: 
    class  sex survival rate 
0 first  men  0.914680 
1 second  men  0.300120 
2 third  men  0.118990 
3 first  woman  0.667971 
4 second  woman  0.329380 
5 third  woman  0.189747 
6 first children  0.660562 
7 second children  0.882608 
8 third children  0.121259 

Jetzt können Sie verwenden factorplot:

sns.factorplot(x='class', y='survival rate', hue='sex', data=df, kind='bar') 

enter image description here

+0

Das ist richtig, aber ich würde nehmen ein Blick auf 'pd.melt'. Es macht die gleiche Umformung, aber sauberer imo. – mwaskom

+0

@mwaskom Ich stimme zu. Ich habe den Beitrag bearbeitet. Vielen Dank. – ayhan

+2

Schön. Ich habe eine zusätzliche Bearbeitung hinzugefügt, die eine Codezeile speichert und das Ergebnis robuster macht, da es nicht darauf angewiesen ist, dass Sie die Reihenfolge der Spalten kennen. – mwaskom