带两列的Python Seaborn条形图/直方图

2024-09-29 21:25:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有熊猫的下一个数据帧-

Perpetrator Perpetrator     Gender
Age         Sex
1    2   Female
2    2   Female
3    3   Female
4    5   Female
5    7   Female
6    7   Female
7    7   Female...

其中:

  • 犯罪人年龄是指犯罪人的年龄
  • 性别是指行为人的性别和性别
  • 犯罪人性别指该性别犯罪人的数量

例如,有5名4岁的女性犯罪者。

我正在尝试制作一个有两条边(列)的seaborn条形图——一条是女性,一条是男性,并查看每个年龄段的数量

尝试使用-

g = sns.catplot(x="Perpetrator Age", y="Perpetrator Sex",col="Gender",
                data=final_df5, saturation=.5,
                kind="bar")

sns.displot(penguins, x="flipper_length_mm", col="sex", multiple="dodge")

(从here

但似乎什么都不管用。 我一直在犯这个错误-

ValueError:无法解释输入“罪犯年龄”

多谢各位


Tags: 数据age数量colgenderfemale性别年龄
1条回答
网友
1楼 · 发布于 2024-09-29 21:25:57

当你尝试时,你会得到什么:

print(df.columns)

您希望它看起来像:

Index(['Perpetrator Age', 'Perpetrator Sex', 'Gender'], dtype='object')

但是,看起来您可能有其存档索引数据。如果您不这样做,并且它看起来如上所示,您可以尝试以下seaborn绘图代码:

import seaborn as sns

g = sns.catplot(x='Perpetrator Age', y="Perpetrator Sex", hue="Gender",
                data=df,saturation=.5, dodge=True, ci=None,kind="bar")

您需要将代码中的col=更改为hue=,并设置dodge=True

随机数据的结果:

catplot result

编辑

看起来数据框的索引是罪犯的年龄。要解决您的问题,请重置索引,然后进行绘图(这次代码绘图是在两个单独的绘图中显示性别):

final_df5. reset_index(inplace=True)

import seaborn as sns

g = sns.catplot(x='Perpetrator Age', y="Perpetrator Sex",
                col='Gender', color='blue',
                data=final_df5, dodge=True,
                ci=None, kind="bar")

结果:

edited result chart

相关问题 更多 >

    热门问题