# 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:

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

### Parâmetros relevantes

<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 de chaves segundo as quais os dados serão agrupados. Não pode ser combinado com `level`</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>É 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.</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`as_index`</td>
      <td>Se for `True`, as chaves de agrupamento são definidas como o índice do DataFrame resultante</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`group_keys`</td>
      <td>Se for `True`, as chaves de agrupamento são incluídas nos índices dos grupos</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`dropna`</td>
      <td>Define se os grupos com valores NaN devem ser excluídos</td>
      <td>`True`</td>
    </tr>
  </tbody>
</table>

## 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:

```python
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)
```

A aparência do DataFrame resultante é a seguinte:

```none
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 quantidade vendida de cada produto utilizando a função `sum()`:

```none
# 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:

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

### Agregaçõ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:

```python
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)
```

É gerado o seguinte DataFrame:

```none
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, calculando a soma total das quantidades vendidas, a receita total e a receita média de cada produto.

```none
# 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:

```none
Cantidad    Ingresos        
      sum    sum    mean
Producto             
A      35    350  116.666667
B      45    450  225.000000
```


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/funcao-groupby-para-dataframes-do-pandas-em-python/](https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/funcao-groupby-para-dataframes-do-pandas-em-python/) for AI/LLM consumption.