Метод corr
Метод corr применяется к DataFrame
и вычисляет попарные коэффициенты корреляции
для всех числовых столбцов. По умолчанию
используется метод корреляции Пирсона.
Метод возвращает новую таблицу, где на пересечении
строки и столбца стоит коэффициент корреляции
между соответствующими переменными.
Синтаксис
df.corr(method='pearson', min_periods=1, numeric_only=True)
Параметры метода:
-
method- метод вычисления корреляции:'pearson'(по умолчанию),'kendall'или'spearman' -
min_periods- минимальное количество наблюдений для вычисления корреляции -
numeric_only- вычислять корреляцию только для числовых столбцов
Пример
Давайте создадим таблицу с двумя числовыми столбцами и вычислим корреляцию по умолчанию:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.corr()
print(res)
Результат выполнения кода:
a b
a 1.0 1.0
b 1.0 1.0
Корреляция равна 1.0, так как столбцы
имеют линейную зависимость.
Пример
Теперь создадим таблицу с более сложной зависимостью между столбцами:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [5, 4, 3, 2, 1],
'c': [1, 3, 2, 5, 4]
})
res = df.corr()
print(res)
Результат выполнения кода:
a b c
a 1.0 -1.0 0.2
b -1.0 1.0 -0.2
c 0.2 -0.2 1.0
Корреляция между a и b равна
-1.0, так как они имеют обратную зависимость.
Между a и c - слабая положительная
корреляция.
Пример
Используем метод корреляции Спирмена для нелинейных зависимостей:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [1, 4, 9, 16, 25]
})
res = df.corr(method='spearman')
print(res)
Результат выполнения кода:
a b
a 1.0 1.0
b 1.0 1.0
Корреляция Спирмена равна 1.0, так как
зависимость является монотонной.
Пример
Вычислим корреляцию только между двумя выбранными столбцами:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [5, 4, 3, 2, 1],
'c': [1, 3, 2, 5, 4]
})
res = df[['a', 'c']].corr()
print(res)
Результат выполнения кода:
a c
a 1.0 0.2
c 0.2 1.0