jakko jakko - 4 months ago 34
Python Question

Seaborn multiple barplots

I have a pandas dataframe that looks like this:

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


How would I create a plot using seaborn that looks like this? Do I have to rearrange my data in some way?


Answer

Yes you need to reshape the DataFrame:

df = pd.melt(df, id_vars="class", var_name="sex", value_name="survival rate")
df
Out: 
    class       Sex     Value
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

Now, you can use factorplot:

sns.factorplot(x='class', y='Value', hue='Sex', data=df, kind='bar')

enter image description here