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