Как рассчитать корреляцию по группе в Pandas


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

df.groupby('group_var')[['values1',' values2']]. corr().unstack().iloc [:, 1 ]

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

Пример: вычислить корреляцию по группе в Pandas

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'points': [18, 22, 19, 14, 14, 11, 20, 28],
 'assists': [2, 7, 9, 3, 12, 10, 14, 21]})

#view DataFrame
print(df)

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

#calculate correlation between points and assists, grouped by team
df.groupby('team')[['points',' assists']]. corr().unstack().iloc [:, 1 ]

team
A 0.603053
B 0.981798
Name: (points, assists), dtype: float64

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

  • Коэффициент корреляции между очками и передачами для команды А равен 0,603053 .
  • Коэффициент корреляции между очками и передачами для команды Б равен 0,981798 .

Поскольку оба коэффициента корреляции положительны, это говорит нам о том, что связь между очками и передачами для обеих команд положительна.

То есть игроки, которые стремятся набрать больше очков, также склонны делать больше передач.

По теме: Что считается «сильной» корреляцией?

Обратите внимание, что мы могли бы сократить синтаксис, не используя функции unstack и iloc , но результаты будут более уродливыми:

df.groupby('team')[['points',' assists']]. corr ()

 points assists
team 
A points 1.000000 0.603053
 assists 0.603053 1.000000
B points 1.000000 0.981798
 assists 0.981798 1.000000

Этот синтаксис создает корреляционную матрицу для обеих команд, что дает нам избыточную информацию.

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

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

Как выполнить GroupBy Sum в Pandas
Как использовать Groupby и Plot в Pandas
Как подсчитать уникальные значения с помощью GroupBy в Pandas

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