Як розрахувати кореляцію за групою в pandas
Ви можете використовувати такий базовий синтаксис, щоб обчислити кореляцію між двома змінними за групою в pandas:
df. groupby (' group_var ')[[' values1 ',' values2 ']]. corr (). unstack (). iloc [:, 1 ]
У наступному прикладі показано, як використовувати цей синтаксис на практиці.
Приклад: обчислення кореляції за групами в Pandas
Припустімо, що у нас є наступні pandas DataFrame:
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