# Cómo utilizar el método Pandas groupby()

La función `DataFrame.groupby()` de la [Biblioteca Python Pandas](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/python-pandas/) se utiliza para **agrupar datos según criterios específicos**, así como para realizar diferentes agregaciones y transformaciones en dichos grupos.

## Sintaxis de la función `DataFrame.groupby()` de Pandas

La función `groupby()` acepta **hasta cinco parámetros** y su sintaxis es la siguiente:

```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>Descripción</strong></th>
      <th><strong>Valor por defecto</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`by`</td>
      <td>Clave o [lista](https://www.ionos.com/digitalguide/websites/web-development/python-list/) de claves según las cuales se agruparán los datos. No puede combinarse con `level`</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Se utiliza cuando se trabaja con Multi-índices para especificar uno o más niveles, de manera que la agrupación se realice según los niveles especificados</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`as_index`</td>
      <td>Si es `True`, las claves de agrupación se establecen como el índice del DataFrame resultante</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`group_keys`</td>
      <td>Si es `True`, las claves de agrupación se incluyen en los índices de los grupos</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`dropna`</td>
      <td>Define si se deben excluir los grupos con valores NaN</td>
      <td>`True`</td>
    </tr>
  </tbody>
</table>

## Uso de la función `DataFrame.grouby()` de Pandas

La función `groupyby()` de Pandas resulta especialmente útil para identificar patrones o anomalías cuando se desea **analizar y resumir grandes volúmenes de datos**.

### Agrupar y agregar

A continuación, analizamos un conjunto de datos de venta de varios productos en el que se incluye información sobre la fecha de venta, el producto vendido y la cantidad que se ha vendido:

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

El aspecto del DataFrame resultante es el siguiente:

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

En el siguiente paso, se utiliza la función `groupby()` de Pandas para agrupar los datos por producto. Después, se calcula la cantidad vendida de cada producto utilizando la función `sum()`:

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

El siguiente resultado indica el total de unidades vendidas de cada producto:

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

### Agregaciones múltiples

En el siguiente ejemplo se utiliza un conjunto de datos similar al anterior, pero más amplio, que también incluye la columna de ingresos:

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

Se genera el siguiente 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
```

Se utiliza `DataFrame.groupby()` de Pandas para volver a agrupar los datos por producto. Después, se utiliza la función `agg()` para agregar los datos calculando la suma total de las cantidades vendidas, los ingresos totales y el ingreso promedio de cada producto.

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

El resultado sería el siguiente:

```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/es-us/digitalguide/paginas-web/desarrollo-web/funcion-groupby-para-dataframes-de-pandas-en-python/](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/funcion-groupby-para-dataframes-de-pandas-en-python/) for AI/LLM consumption.