Data Analysis

Dominando o Pandas GroupBy e Agregação: Um Guia Completo

Spread the love

Pandas é uma poderosa biblioteca Python para manipulação e análise de dados. Uma de suas funcionalidades mais utilizadas é a capacidade de agrupar dados e realizar cálculos agregados. Este artigo explora vários métodos para calcular eficientemente somas agregadas após agrupar dados usando o método groupby(), oferecendo soluções para diferentes níveis de complexidade e formatos de saída desejados.

Sumário:

Soma Básica com groupby()

A maneira mais simples de calcular a soma de uma coluna após o agrupamento é usar groupby() diretamente com o método sum():


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

# Agrupa por 'Group' e soma 'Value'
grouped_sum = df.groupby('Group')['Value'].sum()
print(grouped_sum)

Isso produz concisamente uma Série com a soma de ‘Value’ para cada grupo.

Agregações Múltiplas com agg()

O método agg() permite o cálculo eficiente de múltiplas estatísticas agregadas simultaneamente. Isso é particularmente útil quando você precisa de mais do que apenas a soma:


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

# Calcula a soma, média e contagem para cada grupo
aggregated = df.groupby('Group')['Value'].agg(['sum', 'mean', 'count'])
print(aggregated)

Esta única linha de código calcula a soma, média e contagem de ‘Value’ para cada grupo, resultando em um DataFrame.

Agregação Personalizada com apply()

Para cenários mais complexos que exigem lógica de agregação personalizada, o método apply() oferece a máxima flexibilidade. Você pode definir uma função para realizar quaisquer cálculos desejados:


import pandas as pd
import numpy as np

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

def custom_agg(x):
    return pd.Series({'sum': x.sum(), 'range': x.max() - x.min()})

# Aplica a função de agregação personalizada
result = df.groupby('Group')['Value'].apply(custom_agg).reset_index()
print(result)

Aqui, uma função personalizada calcula a soma e o intervalo para cada grupo.

Somas Cumulativas com groupby() e cumsum()

Para obter somas cumulativas dentro de cada grupo, combine groupby() com o método cumsum():


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

# Calcula a soma cumulativa para cada grupo
df['Cumulative Sum'] = df.groupby('Group')['Value'].cumsum()
print(df)

Isso adiciona uma nova coluna mostrando o total acumulado dentro de cada grupo.

Remodelagem de Dados com pivot_table()

Para uma representação mais visualmente atraente e facilmente analisável de dados agregados, especialmente quando se trata de múltiplas variáveis de agrupamento, use pivot_table():


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Category': ['X', 'Y', 'X', 'Y', 'Z', 'X'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

pivot_table = pd.pivot_table(df, values='Value', index='Group', columns='Category', aggfunc='sum', fill_value=0)
print(pivot_table)

Isso cria uma tabela dinâmica resumindo os dados, facilitando a comparação de somas entre diferentes categorias dentro de cada grupo.

Deixe um comentário

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