Como calcular a correlação por grupo no pandas


Você pode usar a seguinte sintaxe básica para calcular a correlação entre duas variáveis por grupo no pandas:

 df. groupby (' group_var ')[[' values1 ',' values2 ']]. corr (). unstack (). iloc [:, 1 ]

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: calcular correlação por grupo no Pandas

Suponha que temos o seguinte DataFrame do pandas:

 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)

Podemos utilizar o seguinte código para calcular a correlação entre pontos e assistências , agrupados por equipe :

 #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

Pelo resultado podemos ver:

  • O coeficiente de correlação entre pontos e assistências do Time A é 0,603053 .
  • O coeficiente de correlação entre pontos e assistências do Time B é 0,981798 .

Como ambos os coeficientes de correlação são positivos, isto diz-nos que a relação entre pontos e assistências para ambas as equipas é positiva.

Ou seja, jogadores que tendem a marcar mais pontos também tendem a registrar mais assistências.

Relacionado: O que é considerado uma correlação “forte”?

Observe que poderíamos encurtar a sintaxe não usando as funções unstack e iloc , mas os resultados são mais feios:

 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

Essa sintaxe produz uma matriz de correlação para ambas as equipes, o que nos fornece excesso de informações.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Como realizar uma soma GroupBy no Pandas
Como usar Groupby e Plot no Pandas
Como contar valores únicos usando GroupBy no Pandas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *