Рассмотрите информационный кадр с тремя колонками: group_ID
, item_ID
и value
. Скажем, у нас есть 10 itemIDs
всего.Порядок оценки для каждой группы в Pandas
мне нужно ранжировать каждый item_ID
(от 1 до 10) в каждый group_ID
на основе value
, а затем посмотреть, средний ранг (и другие статистические данные) между группами (например, идентификаторы с высшей значения по группам будет получить ранжирование ближе к 1). Как я могу это сделать в Pandas?
This answer делает что-то очень близко с qcut
, но не совсем то же самое.
Пример из данных будет выглядеть следующим образом:
group_ID item_ID value
0 0S00A1HZEy AB 10
1 0S00A1HZEy AY 4
2 0S00A1HZEy AC 35
3 0S03jpFRaC AY 90
4 0S03jpFRaC A5 3
5 0S03jpFRaC A3 10
6 0S03jpFRaC A2 8
7 0S03jpFRaC A4 9
8 0S03jpFRaC A6 2
9 0S03jpFRaC AX 0
, который приведет:
group_ID item_ID rank
0 0S00A1HZEy AB 2
1 0S00A1HZEy AY 3
2 0S00A1HZEy AC 1
3 0S03jpFRaC AY 1
4 0S03jpFRaC A5 5
5 0S03jpFRaC A3 2
6 0S03jpFRaC A2 4
7 0S03jpFRaC A4 3
8 0S03jpFRaC A6 6
9 0S03jpFRaC AX 7
Вы можете использовать функцию 'rankdata' из' scipy.stats' для ранжирования ваших данных. Затем он становится упражнением для правильной группировки и применения этой функции к кадру данных. – Olaf
Спасибо @DSM Я был в середине редактирования сообщения. Я думаю, что последние рейтинги верны. –
Да! @DSM Извините, я только что исправил это. Благодарю. –