API · Pandas

Pandas DataFrame.corr() Função

A função DataFrame corr() encontra a correlação entre as colunas da moldura de dados.

Nesta página

Python Pandas DataFrame.corr() calcula as correlações entre pares de colunas de um DataFrame e as retorna em uma matriz de correlação. Escolha pearson, kendall ou spearman com o argumento method.

Sintaxe e parâmetros de pandas.DataFrame.corr()

Chame o método em um DataFrame, por exemplo, df.corr(method="pearson", min_periods=1). O argumento method seleciona o cálculo da correlação; seu padrão é pearson. O argumento min_periods define o número mínimo de observações válidas necessário para que um par de colunas tenha um resultado. Ele é aplicado separadamente a cada par, e não ao número de pares na matriz.

O método retorna um DataFrame cujas linhas e colunas correspondem às colunas de entrada selecionadas. Cada valor na diagonal é a correlação de uma coluna consigo mesma. Os valores fora da diagonal descrevem a direção e a intensidade da relação entre duas colunas; a correlação, por si só, não demonstra causalidade. Nos exemplos, selecione explicitamente colunas numéricas para deixar claro quais dados entram no cálculo. Ao comparar métodos, mantenha as mesmas linhas e colunas para que as diferenças nos resultados reflitam a escolha do cálculo, e não uma alteração nos dados de entrada. Antes de interpretar um coeficiente, confira quais observações estão disponíveis para aquele par de colunas e se o método escolhido é adequado à relação que você quer resumir.

Calcular uma matriz de correlação de Pearson

Para um exemplo compacto, crie duas colunas numéricas e chame corr() com o método padrão. O exemplo armazena a matriz retornada em correlations para que você possa examiná-la ou usá-la em sua análise.

import pandas as pd

scores = pd.DataFrame({
    "study_hours": [1, 2, 3, 4],
    "score": [2, 4, 5, 8],
})
correlations = scores.corr()
print(correlations)
             study_hours     score
study_hours     1.000000  0.981156
score           0.981156  1.000000

Esta chamada usa pearson. A matriz apresenta os nomes das duas colunas em cada eixo, e o resultado de cada par aparece na interseção correspondente. Se a tabela contiver rótulos ou outros dados não numéricos, selecione as colunas numéricas que deseja comparar antes de chamar o método, em vez de depender do tratamento implícito das colunas.

Calcular uma matriz de correlação de Kendall

Passe method="kendall" para calcular a correlação de postos de Kendall das colunas numéricas. Ao comparar métodos, mantenha as mesmas colunas de entrada para que as matrizes respondam à mesma pergunta.

import pandas as pd

scores = pd.DataFrame({
    "study_hours": [1, 2, 3, 4],
    "score": [2, 4, 5, 8],
})
correlations = scores.corr(method="kendall")
print(correlations)
             study_hours  score
study_hours          1.0    1.0
score                1.0    1.0

O objeto retornado continua sendo um DataFrame de correlação. Consulte o valor na interseção de dois rótulos de coluna diferentes para ver a correlação de Kendall entre eles; a diagonal mostra a autocorrelação de cada coluna.

Usar min_periods com a correlação de Spearman

Defina min_periods para exigir um número mínimo de observações válidas em pares para calcular um resultado. Neste exemplo, a correlação de postos de Spearman só é calculada quando há pelo menos três observações disponíveis em conjunto para cada par de colunas. Os valores ausentes são representados por None na entrada.

import pandas as pd

measurements = pd.DataFrame({
    "first": [1, 2, 3, None],
    "second": [2, 4, None, 8],
    "third": [1, 3, 5, 7],
})
correlations = measurements.corr(method="spearman", min_periods=3)
print(correlations)
        first  second  third
first     1.0     NaN    1.0
second    NaN     1.0    1.0
third     1.0     1.0    1.0

Para first e second, apenas duas linhas contêm observações para ambas as colunas, portanto esse par não atinge o limite de três. Os demais pares são avaliados com base em suas próprias observações válidas compartilhadas. Essa configuração determina se um par recebe um resultado de correlação; ela não solicita uma quantidade específica de pares de colunas.