具有一定复杂性的 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 绘图或更改绘图类型。
我有一个数据框,其中包含一个目标列(二进制)和一个我想要评估的分类列,并查看每个类别的观察百分比按目标分组(例如,类别“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 绘图或更改绘图类型。