【问题标题】:Pandas Dataframe Create Seaborn Horizontal Barplot with categorical dataPandas Dataframe 使用分类数据创建 Seaborn 水平条形图
【发布时间】:2020-06-29 11:08:27
【问题描述】:

我目前正在使用这样的数据框:

我想要的是显示 Victory 列的总数,其中值 S 按 AGE_GROUP 分组并由 GENDER 区分,类似于以下水平条形图:

到目前为止,我可以获得以下图表:

按照以下步骤:

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 并将其包含在图表中?

【问题讨论】:

  • 您是否有理由在 seaborn 而不是 matplot lib 中想要一个堆叠的单杠?

标签: pandas group-by bar-chart seaborn categorical-data


【解决方案1】:

这显然有助于提供原始数据而不是图像。想出了自己的数据。不确定是否理解您的问题,但我在下面的尝试。

数据

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、value count GENDER、unstack 分组并绘制stacked 水平条形图。 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')

输出

【讨论】:

  • 很抱歉没有添加原始数据,这对我来说很好。
猜你喜欢
  • 2016-12-01
  • 2017-09-30
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 2022-08-03
相关资源
最近更新 更多