Pandas Dataframe Создание горизонтального столбца Seaborn с категориальными данными - PullRequest
0 голосов
/ 18 марта 2020

В настоящее время я работаю с таким фреймом данных:

enter image description here

Я хочу показать общее число Столбец Victory, где значение S сгруппировано по AGE_GROUP и дифференцировано по GENDER , что-то вроде следующего горизонтального графика:

enter image description here

До сих пор я мог получить следующий график:

enter image description here

Следуя этим шагам:

victory_df = main_df[main_df["VICTORY"] == "S"]
victory_count = victory_df["AGE_GROUP"].value_counts()
sns.set(style="darkgrid")
sns.barplot(victory_count.index, victory_count.values, alpha=0.9)

Какую стратегию мне следует использовать для определения значения value_count по полу и включения его в диаграмму?

1 Ответ

1 голос
/ 18 марта 2020

Это, очевидно, поможет дать необработанные данные, а не изображение. Придумал собственные данные. Не совсем понял ваш вопрос, но моя попытка ниже.

Данные

df=pd.DataFrame.from_dict({'VICTORY':['S', 'S', 'N', 'N', 'N', 'S', 'N', 'S', 'N', 'S', 'N', 'S', 'S'],'AGE':[5., 88., 12., 19., 30., 43., 77., 50., 78., 34., 45.,  9., 67.],'AGE_GROUP':['0-13', '65+', '0-13', '18-35', '18-35', '36-64', '65+', '36-64','65+', '18-35', '36-64', '0-13', '65+'],'GENDER':['M', 'M', 'F', 'M', 'F', 'F', 'M', 'F', 'F', 'F', 'M', 'M', 'F']})

Построение. Я группирую AGE_GROUP, счетчик значений GENDER, unstack и строю составную горизонтальную линейную диаграмму. Seaborn создан на основе matplotlib, и когда построение графиков не является простым в seaborn, как горизонтальная полоса с накоплением, я возвращаюсь к matplotlib. Надеюсь, вы не обижаетесь.

   df[df['VICTORY']=='S'].groupby('AGE_GROUP')['GENDER'].apply(lambda x: x.value_counts()).unstack().plot(kind='barh', stacked=True)

plt.xlabel('Count')
plt.title('xxxx')

Выход

enter image description here

...