Вы можете использовать следующий синтаксис для вычисления ранга значений в объекте GroupBy в pandas:
df['rank'] = df.groupby(['group_var'])['value_var']. rank ()
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: вычисление ранга в объекте GroupBy
Предположим, у нас есть следующий кадр данных pandas, который показывает очки, набранные баскетболистами в разных командах:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
'points': [10, 10, 12, 15, 19, 23, 20, 20, 26]})
#view DataFrame
print(df)
team points
0 A 10
1 A 10
2 A 12
3 A 15
4 B 19
5 B 23
6 C 20
7 C 20
8 C 26
Мы можем использовать следующий синтаксис для вычисления рейтинга значений очков для каждой команды:
#add ranking column to data frame
df['points_rank'] = df.groupby(['team'])['points']. rank ()
#view updated DataFrame
print(df)
team points points_rank
0 A 10 1.5
1 A 10 1.5
2 A 12 3.0
3 A 15 4.0
4 B 19 1.0
5 B 23 2.0
6 C 20 1.5
7 C 20 1.5
8 C 26 3.0
По умолчанию функция rank() присваивает значения ранжирования в порядке возрастания и использует средний ранг при наличии ничьих.
Однако мы можем использовать метод и возрастающие аргументы для ранжирования значений другим способом:
#add ranking column to data frame
df['points_rank'] = df.groupby(['team'])['points']. rank('dense', ascending= False )
#view updated DataFrame
print(df)
team points points_rank
0 A 10 3.0
1 A 10 3.0
2 A 12 2.0
3 A 15 1.0
4 B 19 2.0
5 B 23 1.0
6 C 20 2.0
7 C 20 2.0
8 C 26 1.0
Этот метод присваивает значение 1 наибольшему значению в каждой группе.
Вы можете найти полный список методов ранжирования, которые вы можете использовать с функцией rank() здесь .
Примечание.Полную документацию по операции GroupBy в pandas можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Pandas: как рассчитать совокупную сумму по группе
Pandas: как подсчитать уникальные значения по группам
Pandas: как рассчитать корреляцию по группе