график процентного столбца в морском приморье из фрейма данных - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть датафрейм, который выглядит так:

|---------------------|------------------|------------------|
|      Gender         |    Male          |    Female        |
|---------------------|------------------|------------------|
|      Scenario       |                  |                  |
|---------------------|------------------|------------------|
|           A         |       79         |      217         |
|---------------------|------------------|------------------|
|           B         |       59         |      408         |
|---------------------|------------------|------------------|
|           C         |       420        |      330         |
|---------------------|------------------|------------------|
|           D         |       208        |      1330        |

Я бы хотел построить гистограмму морского процента, это должен быть один столбец, который должен представлять процент женского пола, то есть для сценария A столбец должен показывать 217 / (217 + 79) и так далее. Как я могу достичь этого. Я могу построить сложенный столбец или соседний столбец из следующего кода.

stacked = my_dataframe.stack().reset_index().rename(columns={0:'value'})
# plot grouped bar chart
sns.barplot(x=stacked.Scenario, y=stacked.value, hue=stacked.Gender)
plt.show()

1 Ответ

1 голос
/ 23 апреля 2019

не самый элегантный код, но это работает:

import pandas as pd


stacked = pd.DataFrame({'Scenario': list('ABCD'), 'Male': [79, 59, 420, 208], 'Female': [217, 408, 330, 1330]})

pd.DataFrame(stacked.apply(lambda x: {'Scenario': x.Scenario, 'Male_pct': x.Male / (x.Male + x.Female), 'Female_pct': x.Female / (x.Male + x.Female)}, axis=1,).tolist())

тогда просто нарисуйте его так, как вы уже строили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...