Как рассчитать корреляцию по группам в pandas
Вы можете использовать следующий базовый синтаксис для расчета корреляции между двумя переменными по группам в pandas:
df. groupby (' group_var ')[[' values1 ',' values2 ']]. corr (). unstack (). iloc [:, 1 ]
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: рассчитать корреляцию по группам в Pandas
Предположим, у нас есть следующий DataFrame pandas:
import pandas as pd
#createDataFrame
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
At 0.603053
B 0.981798
Name: (points, assists), dtype: float64
По результату мы видим:
- Коэффициент корреляции между очками и передачами для Команды А составляет 0,603053 .
- Коэффициент корреляции между очками и передачами для Команды Б составляет 0,981798 .
Поскольку оба коэффициента корреляции положительны, это говорит нам о том, что связь между очками и передачами у обеих команд положительная.
То есть игроки, которые склонны набирать больше очков, также склонны делать больше результативных передач.
Связанный: Что считается «сильной» корреляцией?
Обратите внимание, что мы могли бы сократить синтаксис, не используя функции unstack и iloc , но результат будет уродливее:
df. groupby (' team ')[[' points ',' assists ']]. corr ()
assist points
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 в Pandas
Как использовать Groupby и Plot в Pandas
Как посчитать уникальные значения с помощью GroupBy в Pandas