Mapa de calor de correlação em Seaborn

Manav Narula 20 novembro 2021
Mapa de calor de correlação em Seaborn

A correlação é um fator fundamental para os cientistas de dados. Ele informa como as variáveis ​​em um conjunto de dados estão relacionadas entre si e como elas se movem em relação umas às outras. O valor da correlação varia de -1 a +1. 0 Correlação indica que duas variáveis ​​são independentes uma da outra. Uma correlação positiva indica que as variáveis ​​se movem na mesma direção e uma correlação negativa indica o oposto.

Podemos traçar a matriz de correlação usando o módulo seaborn. Ajuda a compreender o conjunto de dados facilmente e é usado com muita frequência para o trabalho de análise.

Este tutorial irá apresentar como plotar a matriz de correlação em Python usando a função seaborn.heatmap().

O mapa de calor é usado para representar os valores do array graficamente com diferentes tons de cores para diferentes valores. Ele visualiza a matriz geral com muita clareza.

No código abaixo, vamos representar um array de correlação usando um mapa de calor em Python.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

sns.heatmap(df.corr())

mapa de calor de correlação no mar

O código acima cria um gráfico de mapa de calor de correlação básico. A função corr() é usada para retornar a matriz de correlação do DataFrame. Também podemos calcular outros tipos de correlações usando esta função. Observe que a tonalidade da cor para cada valor na barra do eixo da cor.

Também podemos personalizar a figura final usando diferentes parâmetros. Veja o código abaixo.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

sns.heatmap(df.corr(), vmin=-1, vmax=+1, annot=True, cmap="coolwarm")

mapa de calor de correlação no mar com diferentes parâmetros

Observe o uso de tantos parâmetros. Os argumentos vmin e vmax são usados ​​para especificar a escala do eixo da cor. o argumento cmap aqui altera o esquema de cores usado para o gráfico. O parâmetro annot é usado para exibir os valores de correlação nos quadrados. Podemos ainda usar os parâmetros linewidth e linecolor para escurecer as bordas dos quadrados e especificar a cor das bordas. Podemos personalizar a barra de cores usando o argumento cbar_kws.

Observe que se você remover metade dos dados de um lado da diagonal principal, não perderá nenhuma informação importante, pois ela é repetida. Devido a isso, podemos criar um gráfico triangular também.

O trecho de código abaixo consegue isso.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

upp_mat = np.triu(df.corr())

sns.heatmap(df.corr(), vmin=-1, vmax=+1, annot=True, cmap="coolwarm", mask=upp_mat)

mapa de calor de correlação triangular em nascidos no mar

No código acima, primeiro usamos numpy.triu(), que retorna o triângulo superior do array, e então mascaramos isso usando o argumento mask da função heatmap(). Da mesma forma, podemos mascarar o triângulo inferior usando a função numpy.tril().

Outra representação interessante que podemos obter é que podemos mapear apenas uma variável e encontrar sua correlação com diferentes variáveis.

Por exemplo,

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

upp_mat = np.triu(df.corr())

sns.heatmap(df.corr()[["Day 1"]], vmin=-1, vmax=+1, annot=True, cmap="coolwarm")

mapa de calor de correlação no mar com diferentes variáveis

No exemplo acima, traçamos a correlação da variável Day 1 com outras variáveis.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artigo relacionado - Seaborn Heatmap