具有一定复杂性的 Seaborn 条形图

Seaborn barplot with some complexity

我有一个数据框,其中包含一个目标列(二进制)和一个我想要评估的分类列,并查看每个类别的观察百分比按目标分组(例如,类别“a " 显示一列,表明它有 23% 的正面事件和 10% 的负面事件,两者都放在同一个柱中。

现在的问题是我还想一起评估不同的数据帧,并为每个数据帧设置一列。我已经将它们全部连接在一个数据框中,因此我可以在 Seaborn 中使用 hue,但我无法通过 group by 传递多索引。

这是数据框的一个小例子:

df = pd.DataFrame({"col": ["a", "b", "a", "b", "b", "a"], "target" : [0,1,1,1,0,1], "frame" : ["test", "test", "train", "train", "test", "train"]})

a = df.groupby(["frame", "col", "target"])["target"].count()
a = a / a.groupby(level=0).sum()
a

在 groupby 中,我正在尝试创建一个数据框,它可以包含我需要使用 Seaborn 的所有值,但我无法通过这个:(

如有任何帮助,我们将不胜感激!

您可以reset_index使用以下列:

a.rename('value').reset_index()

输出:

   frame col  target     value
0   test   a       0  0.333333
1   test   b       0  0.333333
2   test   b       1  0.333333
3  train   a       1  0.666667
4  train   b       1  0.333333

但请注意 seaborn doesn't do stacked barplots natively,因此您需要使用 pandas 绘图或更改绘图类型。