首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在海运中对轴进行排序,以便显示具有大多数值的类别

如何在海运中对轴进行排序,以便显示具有大多数值的类别
EN

Stack Overflow用户
提问于 2016-02-23 20:36:52
回答 1查看 2.7K关注 0票数 1

我有一个有320 K记录的数据集。其中,我想用x轴中类别的前20个实体(在本例中为Refined_ID)通过计数显示一个集群图。如何才能做到这一点?例如,如果我的数据是:

代码语言:javascript
复制
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轴被命令为:

代码语言:javascript
复制
e123 f123 z123   

这是我的密码:

代码语言:javascript
复制
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)

由于dataframe相当大,所以我将视图限制在前20行进行测试。

更新1

假设没有一种方法可以动态地对海运中的轴进行排序,这就是我希望输出的样子:

代码语言:javascript
复制
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。情节将包括:

代码语言:javascript
复制
x-axis: Refined ID (e123 and f123)
y-axis: Refined_Age (0 to 30)
Hue: Based on Name
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-23 22:05:47

这是你想要的吗?

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35587657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档