Как найти максимальное значение по группе в Pandas


Часто вам может быть интересно найти максимальное значение по группе в pandas DataFrame.

К счастью, это легко сделать с помощью функций groupby() и max() со следующим синтаксисом:

df.groupby('column_name'). max ()

В этом руководстве объясняется несколько примеров того, как использовать эту функцию на практике, используя следующие Pandas DataFrame:

import pandas as pd

#create pandas DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
 'points':[24, 23, 27, 11, 14, 8, 13],
 'rebounds': [11, 8, 7, 6, 6, 5, 12]})

#display DataFrame
print(df)

 team points rebounds
0 A 24 11
1 A 23 8
2 B 27 7
3 B 11 6
4 B 14 6
5 C 8 5
6 C 13 12

Пример 1: максимальное значение нескольких столбцов, сгруппированных по одной переменной

В следующем коде показано, как найти максимальное значение нескольких столбцов, сгруппированных по одной переменной в DataFrame:

#find max values of points and rebounds, grouped by team
df.groupby('team'). max().reset_index()


 team points rebounds
0 A 24 11
1 B 27 7
2 C 13 12

Из вывода мы видим, что:

  • Команда А имеет максимальное количество очков , равное 24, и максимальное значение подборов , равное 11.
  • Команда Б имеет максимальное значение очков 27 и максимальное значение подборов 7.
  • Команда C имеет максимальное значение очков 13 и максимальное значение подборов 12.

Обратите внимание, что мы использовали функцию reset_index() , чтобы убедиться, что индекс соответствует индексу в исходном DataFrame.

Пример 2. Максимальное значение одного столбца, сгруппированного по одной переменной

Следующий код показывает, как найти максимальное значение только одного столбца, сгруппированного по одной переменной:

#find max value of points, grouped by team
df.groupby('team')['points']. max().reset_index()

 team points
0 A 24
1 B 27
2 C 13

Пример 3. Сортировка по максимальному значению

Мы также можем использовать функцию sort_values() для сортировки максимальных значений.

Мы можем указать по возрастанию = False для сортировки от наибольшего к наименьшему:

#find max value by team, sort descending
df.groupby('team')['points']. max().reset_index(). sort_values(['points'], ascending= False )


 team points
1 B 27
0 A 24
2 C 13

Или мы можем указать по возрастанию=True для сортировки от наименьшего к наибольшему:

#find max value by team, sort ascending 
df.groupby('team')['points']. max().reset_index(). sort_values(['points'], ascending= True ) 

 team points
2 C 13
0 A 24
1 B 27

Дополнительные ресурсы

Как рассчитать сумму столбцов в Pandas
Как рассчитать среднее значение столбцов в Pandas
Как найти максимальное значение столбцов в Pandas

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.