2016-08-06 13 views
5

Mam dataframe pandy, który wygląda tak:Seaborn wiele 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 

Jak utworzyć wykres używając Seaborn który wygląda tak? Czy muszę w jakiś sposób zmienić moje dane?

Odpowiedz

12

Tak trzeba zmienić kształt DataFrame:

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 

Teraz można użyć factorplot:

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

enter image description here

+0

ta jest poprawna, ale zabrałbym spójrz na 'pd.melt'. Powoduje to takie samo przekształcenie, ale bardziej czysto imo. – mwaskom

+0

@mwaskom Zgadzam się. Edytowałem post. Dzięki. – ayhan

+2

Nice. Dodałem dodatkową edycję, która zapisuje linię kodu i sprawia, że ​​wynik jest bardziej solidny, ponieważ nie polega na tym, że znasz kolejność kolumn. – mwaskom

Powiązane problemy