gpt4 book ai didi

python - 如何在seaborn中对轴进行排序,以便显示具有最多值的类别

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:15 26 4
gpt4 key购买 nike

我有一个包含大约 320k 记录的数据集。其中,我想在 x 轴上显示该类别的前 20 个实体(在本例中为 Refined_ID),并按其计数显示一个群图。如何才能实现这一目标呢?例如,如果我的数据是:

Refined_ID Refined_Age Name
e123 21 foo1
f123 19 bar1
z123 26 foo2
f123 29 bar2
e123 20 foo1
e1342 19 bar3
f123 20 foo3

我希望我的 x 轴排序为:

e123 f123 z123   

这是我的代码:

g = sns.swarmplot(x = dfAnalysis['Refined_ID'].iloc[:20],y = dfAnalysis['Refined_Age'], hue = dfAnalysis['Name'], orient="v")
g.set_xticklabels(g.get_xticklabels(),rotation=30)

由于数据帧相当大,我将 View 限制为前 20 行进行测试。

更新1

假设没有办法动态对seaborn中的轴进行排序,这就是我希望输出的样子:

Refined_ID Refined_Age     Name   Count_of_Refined_ID
e123 21 foo1 2
f123 19 bar1 3
z123 26 foo2 1
f123 29 bar2 3
e123 20 foo1 3
e1342 19 bar3 1
f123 20 foo3 3

从此数据框中,我想根据计数绘制前两个 Refined_ID。在本例中,这两个类别将为 e123f123。该情节将有:

x-axis: Refined ID (e123 and f123)
y-axis: Refined_Age (0 to 30)
Hue: Based on Name

最佳答案

这是你想要的吗?

counts = df['Refined_ID'].value_counts()
ix = (df['Refined_ID'].apply(lambda x: counts[x])
.sort_values(ascending=False).index)
df.reindex(ix)

Refined_ID Refined_Age Name
6 f123 20 foo3
3 f123 29 bar2
1 f123 19 bar1
4 e123 20 foo1
0 e123 21 foo1
5 e1342 19 bar3
2 z123 26 foo2

关于python - 如何在seaborn中对轴进行排序,以便显示具有最多值的类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35587657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com