当面对大量群体时,由于线条太多且传说难以理解,您可能制作的任何图形都会变得无用。在这些情况下,能够找到其中包含最多和最少信息的组非常有用。但是,虽然x.size()
告诉您组成员资格(在使用groupby
之后),但我无法使用此信息重新排序数据框,因此您可以使用限制循环来只绘制前x个组。
答案 0 :(得分:3)
您可以使用transform
获取该列的计数和排序:
df = pd.DataFrame({'A': list('aabababc'), 'B': np.arange(8)})
df
Out:
A B
0 a 0
1 a 1
2 b 2
3 a 3
4 b 4
5 a 5
6 b 6
7 c 7
df['counts'] = df.groupby('A').transform('count')
df
Out:
A B counts
0 a 0 4
1 a 1 4
2 b 2 3
3 a 3 4
4 b 4 3
5 a 5 4
6 b 6 3
7 c 7 1
现在您可以按counts
排序:
df.sort_values('counts')
Out:
A B counts
7 c 7 1
2 b 2 3
4 b 4 3
6 b 6 3
0 a 0 4
1 a 1 4
3 a 3 4
5 a 5 4
在一行中:
df.assign(counts = df.groupby('A').transform('count')).sort_values('counts')