# O que é e como usar a função Pandas groupby()

Com a função `DataFrame.groupby()` do [Python Pandas](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-pandas/), você pode **agrupar dados com base em critérios específicos** e executar diversas agregações e transformações.

## Qual é a sintaxe da função Pandas `DataFrame.groupby()`?

A função Pandas `groupby()` aceita a inclusão de **até quatro parâmetros**. Sua sintaxe básica é a seguinte:

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

### Parâmetros importantes da função Pandas `groupby`

<table>
  <thead>
    <tr>
      <th><strong>Parâmetro</strong></th>
      <th><strong>Descrição</strong></th>
      <th><strong>Valor padrão</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`by`</td>
      <td>Chave ou [lista em Python](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/listas-em-python/ "Como usar uma lista em Python") de chaves para agrupar. Não deve ser combinado com o parâmetro `level`</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Usado com o objeto MultiIndex para especificar um ou mais níveis de agrupamento</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`as_index`</td>
      <td>Se verdadeiro (`True`), as chaves do grupo são definidas como o índice do DataFrame resultante</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`group_keys`</td>
      <td>Se verdadeiro (`True`), as chaves do grupo são incluídas no índice dos grupos</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`dropna`</td>
      <td>Especifica se grupos com valores NaN devem ser excluídos</td>
      <td>`True`</td>
    </tr>
  </tbody>
</table>

## Como usar a função Pandas `DataFrame.groupby()`

A função Pandas `groupby()` é especialmente útil para **analisar e resumir** grandes conjuntos de dados, facilitando a identificação de padrões ou anomalias.

### Agrupar e agregar

Apresentamos abaixo um exemplo de conjunto de dados de vendas que contém informações sobre a data da venda, o produto vendido e sua quantidade:

```python
import pandas as pd
# Exemplo de conjunto de dados de vendas
data = {
    'Data': ['2025-01-01', '2025-01-01', '2025-01-02', '2025-01-02', '2025-01-03'],
    'Produto': ['A', 'B', 'A', 'B', 'A'],
    'Quantidade': [10, 20, 15, 25, 10]
}
df = pd.DataFrame(data)
print(df)
```

O DataFrame criado ficará assim:

```none
Data Produto  Quantidade
0  2025-01-01       A       10
1  2025-01-01       B       20
2  2025-01-02       A       15
3  2025-01-02       B       25
4  2025-01-03       A       10
```

Em seguida, vamos agrupar o conjunto de dados por produto com a função Pandas `groupby()`. Depois, faremos o cálculo da quantidade total vendida de cada produto usando `sum()`:

```python
# Agrupar por produto e calcular a soma da quantidade vendida
total = df.groupby('Produto')['Quantidade'].sum()
print(total)
```

O resultado apresentará o número total de unidades vendidas de cada produto:

```none
Produto
A    35
B    45
Nome: Quantidade, dtype: int64
```

### Agregações múltiplas

No exemplo a seguir, vamos usar um conjunto de dados maior que também inclui a receita gerada:

```python
data = {
    'Data': ['2025-01-01', '2025-01-01', '2025-01-02', '2025-01-02', '2025-01-03'],
    'Produto': ['A', 'B', 'A', 'B', 'A'],
    'Quantidade': [10, 20, 15, 25, 10],
    'Receita': [100, 200, 150, 250, 100]
}
df = pd.DataFrame(data)
print(df)
```

O DataFrame ficará assim:

```none
Data    Produto  Quantidade  Receita
0  2025-01-01       A          10         100
1  2025-01-01       B          20         200
2  2025-01-02       A          15         150
3  2025-01-02       B          25         250
4  2025-01-03       A          10         100
```

Usando a função Pandas `DataFrame.groupby()`, vamos agrupar os dados por produto e, em seguida, aplicaremos a função `agg()` para calcular a quantidade e a receita total, bem como a receita média por produto.

```python
# Agrupar por produto e aplicar múltiplas agregações
groups = df.groupby('Produto').agg({
    'Quantidade': 'sum',
    'Receita': ['sum', 'mean']
})
print(groups)
```

Este será o resultado obtido:

```none
Quantidade Receita        
          sum    sum    mean
Produto                  
A          35    350  116.666667
B          45    450  225.000000
```


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-pandas-dataframe-groupby/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-pandas-dataframe-groupby/) for AI/LLM consumption.