Como utilizar o método Pandas groupby()
A função DataFrame.groupby() da Biblioteca Python Pandas é utilizada para agrupar dados de acordo com critérios específicos, bem como para realizar diferentes agregações e transformações nesses grupos.
Sintaxe da função DataFrame.groupby() do Pandas
A função groupby() aceita até cinco parâmetros e a sua sintaxe é a seguinte:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonParâmetros relevantes
| 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 especificar um ou mais níveis, de modo que o agrupamento seja feito de acordo com os níveis especificados. | None
|
as_index
|
Se for True, as chaves de agrupamento são definidas como o índice do DataFrame resultante
|
True
|
group_keys
|
Se for True, as chaves de agrupamento são incluídas nos índices dos grupos
|
True
|
dropna
|
Define se os grupos com valores NaN devem ser excluídos | True
|
Utilização da função DataFrame.grouby() do Pandas
A função groupyby() do Pandas é especialmente útil para identificar padrões ou anomalias quando se deseja analisar e resumir grandes volumes de dados.
Agrupar e adicionar
A seguir, analisamos um conjunto de dados de vendas de vários produtos, que inclui informações sobre a data da venda, o produto vendido e a quantidade 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)pythonA aparência do DataFrame resultante é 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 10Na etapa seguinte, utiliza-se a função groupby() do Pandas para agrupar os dados por produto. Em seguida, calcula-se a quantidade vendida de cada produto utilizando 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: int64Agregações múltiplas
No exemplo seguinte, é utilizado um conjunto de dados semelhante ao anterior, mas mais abrangente, que também inclui a coluna de rendimentos:
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 100Utiliza-se DataFrame.groupby() do Pandas para reagrupar os dados por produto. Em seguida, utiliza-se a função agg() para agregar os dados, calculando a soma total das quantidades 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