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


Вы можете использовать следующий базовый синтаксис для вычисления медианного значения по группе в pandas:

df.groupby(['group_variable'])['value_variable']. median().reset_index()

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

df.groupby(['group1', 'group2'])['value_variable']. median().reset_index()

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1: найти медианное значение по одной группе

Предположим, у нас есть следующие Pandas DataFrames:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'position': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
 'points': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

 team position points rebounds
0 A G 5 11
1 A G 7 8
2 A F 7 10
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9
7 B F 4 12

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

#calculate median points by team
df.groupby(['team'])['points']. median().reset_index()

 team points
0 A 7.0
1 B 9.0

Из вывода мы видим:

  • Среднее количество очков, набранных игроками команды А, равно 7 .
  • Среднее количество очков, набранных игроками команды Б, равно 9 .

Обратите внимание, что мы также можем найти медианное значение двух переменных одновременно:

#calculate median points and median rebounds by team
df.groupby(['team'])[['points', 'rebounds']]. median ()

 team points rebounds
0 A 7.0 9.0
1 B 9.0 7.5

Пример 2: найти медианное значение по нескольким группам

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

#calculate median points by team
df.groupby(['team', 'position'])['points']. median().reset_index()

 team position points
0 A F 8.0
1 A G 6.0
2 B F 6.5
3 B G 10.5

Из вывода мы видим:

  • Среднее количество очков, набранных игроками на позиции «F» в команде А, равно 8 .
  • Среднее количество очков, набранных игроками в позиции «G» в команде А, равно 6 .
  • Среднее количество очков, набранных игроками на позиции «F» в команде B, составляет 6,5 .
  • Среднее количество очков, набранных игроками на позиции «G» в команде B, составляет 10,5 .

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

В следующих руководствах объясняется, как выполнять другие распространенные функции в pandas:

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

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