GroupBy e agregação
df.groupby(), agg(), transform(), apply() e agregações nomeadas com Named Aggregation.
GroupBy e agregação é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
A Ideia de Dividir-Aplicar-Combinar
GroupBy segue o padrão dividir-aplicar-combinar: divide as linhas em grupos por uma chave, aplica uma função a cada grupo e depois combina os resultados em um único quadro. Esse padrão é a base da maioria dos resumos analíticos.
import pandas as pd
df = pd.DataFrame({
"dept": ["A", "A", "B", "B", "B"],
"salary": [50, 70, 40, 60, 80],
})groupby básico
df.groupby("col") cria um objeto agrupado. Encadear uma agregação como .mean() calcula um valor por grupo.
print(df.groupby("dept")["salary"].mean())
# dept
# A 60.0
# B 60.0Várias Agregações
Chame várias reduções de uma só vez com .agg([...]), produzindo uma coluna por função.
print(df.groupby("dept")["salary"].agg(["mean", "min", "max", "count"]))Dicionário de Agregação por Coluna
Passe um dicionário para .agg a fim de aplicar funções diferentes a colunas diferentes.
df["bonus"] = [5, 7, 4, 6, 8]
out = df.groupby("dept").agg({"salary": "mean", "bonus": "sum"})
print(out)Agregação Nomeada
A agregação nomeada fornece nomes claros às colunas de saída usando a sintaxe pd.NamedAgg. Isso evita cabeçalhos de coluna multinível confusos.
out = df.groupby("dept").agg(
avg_salary=("salary", "mean"),
total_bonus=("bonus", "sum"),
)
print(out)Agrupamento por Várias Chaves
Passe uma lista de colunas para agrupar por várias chaves de uma só vez, produzindo um resultado hierárquico (MultiIndex).
df["level"] = ["jr", "sr", "jr", "sr", "sr"]
print(df.groupby(["dept", "level"])["salary"].mean())transform: Saída com o Mesmo Formato
.transform() retorna um resultado alinhado às linhas ORIGINAL, não uma linha por grupo. É perfeito para adicionar uma estatística do grupo de volta como uma nova coluna.
df["dept_avg"] = df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "dept_avg"]])transform para Normalização
Como transform faz a expansão de volta para cada linha, é possível normalizar dentro dos grupos, por exemplo subtraindo a média do grupo.
df["centered"] = df["salary"] - df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "centered"]])apply para Lógica Personalizada
.apply() fornece cada grupo, como um sub-DataFrame, à sua função. Use-o para lógicas que as agregações integradas não conseguem expressar, como retornar as N linhas principais de cada grupo.
top = df.groupby("dept").apply(lambda g: g.nlargest(1, "salary"))
print(top[["dept", "salary"]])agg versus transform versus apply
agg reduz cada grupo a um valor. transform retorna um valor para cada linha original. apply é a opção genérica e flexível (porém mais lenta). Escolha a opção mais específica para obter clareza e velocidade.
Desagrupamento com reset_index
Os resultados de GroupBy colocam as chaves no índice. Chame .reset_index() para transformá-las novamente em colunas comuns, como a maior parte do código posterior espera.
flat = df.groupby("dept")["salary"].mean().reset_index()
print(flat)
# dept salary
# 0 A 60.0
# 1 B 60.0Verificação rápida
Teste sua compreensão de groupby.
Recapitulação
Elementos essenciais de GroupBy:
- Dividir-aplicar-combinar por meio de
df.groupby("col") .agg([...])e agregação por dicionário ou nomeada para várias estatísticas.transform()retorna resultados com o formato original.apply()para lógica arbitrária por grupo- Use sempre
.reset_index()para transformar as chaves dos grupos novamente em colunas
Perguntas Frequentes
A aula “GroupBy e agregação” é grátis?
Sim — o texto completo de “GroupBy e agregação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “GroupBy e agregação”?
df.groupby(), agg(), transform(), apply() e agregações nomeadas com Named Aggregation. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “GroupBy e agregação”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- GroupBy e agregação
- Tabelas dinâmicas e tabulação cruzada
- Mesclagem e junção avançadas
- Séries temporais no Pandas