O método groupby() do Pandas é uma das ferramentas mais importantes para análise de dados porque permite agrupar registros com características semelhantes e aplicar cálculos sobre cada grupo.
Como funciona?
O processo pode ser entendido em três etapas:
- Split (Dividir) → separa os dados em grupos.
- Apply (Aplicar) → executa uma operação em cada grupo.
- Combine (Combinar) → reúne os resultados em uma nova estrutura.
Exemplo do DataFrame
import pandas as pd
df = pd.DataFrame({
'Animal': ['Cachorro', 'Gato', 'Elefante', 'Cachorro', 'Gato', 'Elefante'],
'Cor': ['Preto', 'Branco', 'Cinza', 'Marrom', 'Preto', 'Marrom'],
'Quantidade': [2, 3, 1, 4, 2, 2]
})
Resultado:
| Animal | Cor | Quantidade |
|---|---|---|
| Cachorro | Preto | 2 |
| Gato | Branco | 3 |
| Elefante | Cinza | 1 |
| Cachorro | Marrom | 4 |
| Gato | Preto | 2 |
| Elefante | Marrom | 2 |
Agrupando por uma coluna
df.groupby('Animal').sum(numeric_only=True)
Resultado:
| Animal | Quantidade |
|---|---|
| Cachorro | 6 |
| Elefante | 3 |
| Gato | 5 |
O Pandas agrupou todas as linhas com o mesmo animal e somou os valores da coluna Quantidade.
Agrupando por duas colunas
df.groupby(['Animal', 'Cor'])[['Quantidade']].sum()
Resultado:
| Animal | Cor | Quantidade |
|---|---|---|
| Cachorro | Marrom | 4 |
| Cachorro | Preto | 2 |
| Elefante | Cinza | 1 |
| Elefante | Marrom | 2 |
| Gato | Branco | 3 |
| Gato | Preto | 2 |
Agora o agrupamento considera a combinação Animal + Cor.
Operações úteis
Contagem
df.groupby('Animal').count()
Média
df.groupby('Animal').mean(numeric_only=True)
Máximo
df.groupby('Animal').max()
Mínimo
df.groupby('Animal').min()
Múltiplas agregações
df.groupby('Animal')['Quantidade'].agg(['sum', 'mean', 'max', 'min'])
Resultado:
| Animal | sum | mean | max | min |
|---|---|---|---|---|
| Cachorro | 6 | 3.0 | 4 | 2 |
| Elefante | 3 | 1.5 | 2 | 1 |
| Gato | 5 | 2.5 | 3 | 2 |