Найти в Дзене
Владимир Сухомлинов

Эконометрика: код для корреляционной матрицы в Python в форме «тепловой карты»

Напишем код, который построит корреляционную матрицу. Но не просто обычную матрицу, а «тепловую карту» – наглядную форму корреляционной матрицы, где цвет ячейки разный в зависимости от силы корреляции. Данные для иллюстрирования работы кода взяты из открытого архива: import pandas as pd import numpy as np df = pd.read_excel(r'C:\...\filename.xlsx') #читаем данные из excel. Здесь предполагается, что в файле единственная вкладка. Если она не единственная, можно воспользоваться опцией sheet_name=’имя листа’ или скопировать данные в отдельную книгу с единственным листом. Первая строка – имя переменных, лучше покороче и латинскими буквами. corr = df.corr() #считаем корреляции (самая популярная, Пирсона) print corr #можно посмотреть обычную матрицу. Неудобно и ненаглядно. import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(54,54)) #Тут 54 – произвольное число. Главное, чтобы хватало на все переменные (если их 15, то надо вбить не менее 17. 15 на переменные и плюс еще 2

Напишем код, который построит корреляционную матрицу. Но не просто обычную матрицу, а «тепловую карту» – наглядную форму корреляционной матрицы, где цвет ячейки разный в зависимости от силы корреляции.

Данные для иллюстрирования работы кода взяты из открытого архива:

Исходные данные для нашего примера
Исходные данные для нашего примера

import pandas as pd

import numpy as np

df = pd.read_excel(r'C:\...\filename.xlsx') #читаем данные из excel. Здесь предполагается, что в файле единственная вкладка. Если она не единственная, можно воспользоваться опцией sheet_name=’имя листа’ или скопировать данные в отдельную книгу с единственным листом. Первая строка – имя переменных, лучше покороче и латинскими буквами.

corr = df.corr() #считаем корреляции (самая популярная, Пирсона)

print corr #можно посмотреть обычную матрицу. Неудобно и ненаглядно.

import seaborn as sns

import matplotlib.pyplot as plt

plt.figure(figsize=(54,54)) #Тут 54 – произвольное число. Главное, чтобы хватало на все переменные (если их 15, то надо вбить не менее 17. 15 на переменные и плюс еще 2 на заголовки).

sns.heatmap(corr, vmax=1, square=True,annot=True,cmap='cubehelix')

plt.title('Correlation between different fearures')

plt.show() #тепловая карта готова. Рисунок можно скопировать в буфер обмена.

Для базы данных, которую мы загрузили, получилось вот так:

Результат - "тепловая карта"
Результат - "тепловая карта"