A função DataFrame.groupby() da Bi­bli­o­teca Python Pandas é utilizada para agrupar dados de acordo com critérios es­pe­cí­fi­cos, bem como para realizar di­fe­ren­tes agre­ga­ções e trans­for­ma­ções nesses grupos.

Sintaxe da função DataFrame.groupby() do Pandas

A função groupby() aceita até cinco pa­râ­me­tros e a sua sintaxe é a seguinte:

DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)
python

Pa­râ­me­tros re­le­van­tes

Parâmetro Descrição Valor padrão
by Chave ou lista de chaves segundo as quais os dados serão agrupados. Não pode ser combinado com level None
level É utilizado quando se trabalha com Multi-índices para es­pe­ci­fi­car um ou mais níveis, de modo que o agru­pa­mento seja feito de acordo com os níveis es­pe­ci­fi­ca­dos. None
as_index Se for True, as chaves de agru­pa­mento são definidas como o índice do DataFrame re­sul­tante True
group_keys Se for True, as chaves de agru­pa­mento são incluídas nos índices dos grupos True
dropna Define se os grupos com valores NaN devem ser excluídos True

Uti­li­za­ção da função DataFrame.grouby() do Pandas

A função groupyby() do Pandas é es­pe­ci­al­mente útil para iden­ti­fi­car padrões ou anomalias quando se deseja analisar e resumir grandes volumes de dados.

Agrupar e adicionar

A seguir, ana­li­sa­mos um conjunto de dados de vendas de vários produtos, que inclui in­for­ma­ções sobre a data da venda, o produto vendido e a quan­ti­dade vendida:

import pandas as pd
# Ejemplo de reporte de ventas
data = {
    'Fecha': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Producto': ['A', 'B', 'A', 'B', 'A'],
    'Cantidad': [10, 20, 15, 25, 10]
}
df = pd.DataFrame(data)
print(df)
python

A aparência do DataFrame re­sul­tante é a seguinte:

Fecha  Producto  Cantidad
0  2021-01-01       A     10
1  2021-01-01       B     20
2  2021-01-02       A     15
3  2021-01-02       B     25
4  2021-01-03       A     10

Na etapa seguinte, utiliza-se a função groupby() do Pandas para agrupar os dados por produto. Em seguida, calcula-se a quan­ti­dade vendida de cada produto uti­li­zando a função sum():

# Agrupar por producto y calcular la suma de las cantidades vendidas
suma = df.groupby('Producto')['Cantidad'].sum()
print(suma)

O resultado seguinte indica o total de unidades vendidas de cada produto:

Producto
A    35
B    45
Name: Cantidad, dtype: int64

Agre­ga­ções múltiplas

No exemplo seguinte, é utilizado um conjunto de dados se­me­lhante ao anterior, mas mais abran­gente, que também inclui a coluna de ren­di­men­tos:

data = {
    'Fecha': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Producto': ['A', 'B', 'A', 'B', 'A'],
    'Cantidad': [10, 20, 15, 25, 10],
    'Ingresos': [100, 200, 150, 250, 100]
}
df = pd.DataFrame(data)
print(df)
python

É gerado o seguinte DataFrame:

Fecha Producto  Cantidad  Ingresos
0  2021-01-01       A     10     100
1  2021-01-01       B     20     200
2  2021-01-02       A     15     150
3  2021-01-02       B     25     250
4  2021-01-03       A     10     100

Utiliza-se DataFrame.groupby() do Pandas para reagrupar os dados por produto. Em seguida, utiliza-se a função agg() para agregar os dados, cal­cu­lando a soma total das quan­ti­da­des vendidas, a receita total e a receita média de cada produto.

# Agrupar por producto y aplicar agregaciones múltiples
grupos = df.groupby('Producto').agg({
    'Cantidad': 'sum',
    'Ingresos': ['sum', 'mean']
})
print(grupos)

O resultado seria o seguinte:

Cantidad    Ingresos        
      sum    sum    mean
Producto             
A      35    350  116.666667
B      45    450  225.000000
Ir para o menu principal