pandas - Pandas Dataframe 使用分类数据创建 Seaborn 水平条形图
问题描述
我目前正在使用这样的数据框:
我想要的是显示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 并将其包含在图表中?
解决方案
这显然有助于提供原始数据而不是图像。想出了自己的数据。不确定是否理解您的问题,但我在下面的尝试。
数据
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,取消堆叠并绘制堆叠的水平条形图。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')
输出
推荐阅读
- javascript - How do I setup a "rolling window"?
- python-3.x - 为什么输入刷新标准输出
- vue.js - 每页的行数未正确定位
- imagemagick - 如何使用 libwebp 编译 Imagick 以获得 Webp 图像支持
- r - R Compare rows in the same dataset by ID to find out if one comes before one
- git - 更新分支不是当前的 master
- react-native - 无法更新 MapView 的 onRegionChange() 方法中的状态变量
- python - 平均每四个二维numpy数组python
- search - TFS 升级到 Azure DevOps - 是否可以知道搜索选项的用户是什么
- php - 如何根据某些条件调用不同的 WP 页面?