Pandas: como agrupar duas colunas e agregar


Você pode usar a seguinte sintaxe básica com a função groupby() no pandas para agrupar por duas colunas e agregar outra coluna:

 df. groupby ([' var1 ',' var2 '])[' var3 ']. mean ()

Este exemplo específico agrupa o DataFrame pelas colunas var1 e var2 e calcula a média da coluna var3 .

Os exemplos a seguir mostram como agrupar em duas colunas e agregar usando o seguinte DataFrame do pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'G', 'G', 'F'],
                   ' points ': [15, 22, 24, 25, 20, 35, 34, 19, 14, 12]})

#view DataFrame
print (df)

  team position points
0 AG 15
1 AG 22
2 AF 24
3 AF 25
4 AF 20
5 BG 35
6 BG 34
7 BG 19
8 BG 14
9 BF 12

Exemplo 1: Agrupe duas colunas e calcule a média de outra coluna

Podemos usar a seguinte sintaxe para calcular o valor médio da coluna de pontos , agrupados pelas colunas equipe e posição :

 #calculate mean of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. mean ()

team position
AF23.0
      G 18.5
BF 12.0
      G 25.5
Name: points, dtype: float64

Pelo resultado podemos ver:

  • O valor médio de pontos dos jogadores da equipe A na posição F é 23 .
  • O valor médio de pontos dos jogadores da equipe A na posição G é 18,5 .

E assim por diante.

Exemplo 2: Agrupe duas colunas e calcule o máximo de outra coluna

Podemos usar a seguinte sintaxe para calcular o valor máximo da coluna de pontos , agrupados pelas colunas equipe e posição :

 #calculate max of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. max ()

team position
AF25
      G22
BF 12
      G 35
Name: points, dtype: int64

Pelo resultado podemos ver:

  • O valor máximo de pontos para jogadores da equipe A na posição F é 25 .
  • O valor máximo de pontos para jogadores da equipe A na posição G é 22 .

E assim por diante.

Exemplo 3: Agrupar por duas colunas e contar ocorrências

Podemos usar a seguinte sintaxe para contar ocorrências de cada combinação das colunas equipe e posição :

 #count occurrences of each combination of team and position columns
df. groupby ([' team ', ' position ']). size ()

team position
AF3
      G2
BF 1
      G4
dtype: int64

Pelo resultado podemos ver:

  • Existem 3 jogadores na equipe A na posição F.
  • Existem 2 jogadores na equipe A na posição G.

E assim por diante.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em pandas:

Como contar valores únicos usando Pandas GroupBy
Como aplicar uma função ao Pandas Groupby
Como criar um gráfico de barras do Pandas GroupBy

Add a Comment

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