Я заинтересован в сортировке сгруппированного кадра данных по количеству записей для каждой группы. Насколько я могу судить, я могу либо сортировать по групповым ярлыкам, либо вообще нет. Скажем, у меня есть 10 записей, относящихся к трем группам. Группа А состоит из 6 членов, группа В состоит из трех членов, а группа С имеет 1 член. Теперь, когда я, например, выполните grouped.describe(), я хотел бы, чтобы результат был упорядочен, чтобы сначала отобразить группу с наибольшим количеством записей.pandas: сортировать сгруппированные данные по частоте членов группы
0
A
ответ
2
Я бы поместить значение статистики из describe()
, то вы можете просто использовать sort()
, так:
incsv = StringIO("""Group,Value
B,1
B,2
B,3
C,8
A,5
A,10
A,15
A,25
A,35
A,40""")
df = pd.read_csv(incsv)
groups = df.groupby('Group').describe().unstack()
Value
count mean std min 25% 50% 75% max
Group
A 6 21.666667 14.023789 5 11.25 20 32.5 40
B 3 2.000000 1.000000 1 1.50 2 2.5 3
C 1 8.000000 NaN 8 8.00 8 8.0 8
dfstats.xs('Value', axis=1).sort('count', ascending=True)
count mean std min 25% 50% 75% max
Group
C 1 8.000000 NaN 8 8.00 8 8.0 8
B 3 2.000000 1.000000 1 1.50 2 2.5 3
A 6 21.666667 14.023789 5 11.25 20 32.5 40
Я отменил то только для иллюстрации, так как он уже был отсортирован по умолчанию, но вы можете сортировать в любом случае вы хотите конечно.
Бонус для тех, кто может сортировать по счету, не отбрасывая или не укладывая уровень «Значение». :)
попробуйте сделать это как ваш последний шаг: '' groups.sort ([('Value', 'count')], ascending = False) '', хотя и не уверен, что он более полезен – Jeff
Определенно лучше, чем мой. xs (попытка, я не понимал, что сортировка может использовать кортежи, что приятно. –
Спасибо! В дополнение к решению моей проблемы, вы также научили меня чему-то полезному в отношении панд в целом. – user857661