我的数据如下:
channel ter Id
0 BWM A 6
1 IND A 15
2 RIA C 2
3 BWM B 7
4 IND B 5
5 RIA A 4
6 BWM C 3
7 IND C 33
8 RIA B 21
当我绘制它时:
sns.set(style='darkgrid')
sns.barplot(x='channel', y='Id', hue='ter', data=df, palette='Set2')
plt.show()
它在x轴上按字母顺序排序,因此通道是BWM-> IND-> RIA。 但是,我需要的是它按计数(即Id值)排序,因此IND是第一个。
我尝试在order = df['channel'].value_counts().index
内添加barplot()
,但没有帮助。
我也希望能够按照每个频道的计数来订购,但是如果付出太多努力则不必。
谢谢!
答案 0 :(得分:1)
由于每个频道包含多个ID,因此“按ID排序”的定义不明确;您必须指定类似ID的总和,组中最大的ID或其他内容。如果您想按最大的ID总和订购吧,
sns.barplot(x='channel', y='Id', hue='ter', data=df, palette='Set2', order=df.groupby('channel').Id.sum().sort_values(ascending=False).index)
完成这项工作。