# El método Pandas fillna() para reemplazar valores NaN

La función `DataFrame.fillna()`de la [Biblioteca Python Pandas](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-pandas/) se utiliza para **reemplazar valores faltantes en un DataFrame**. Esto puede resultar de gran utilidad a la hora de facilitar los procesos de limpieza de datos o de realizar análisis.

## Sintaxis de la función `fillna()`de Pandas

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

```python
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
```

### Parámetros relevantes

Podemos ajustar el comportamiento de la función `DataFrame.fillna()` de Pandas utilizando los siguientes parámetros:

<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>`value`</td>
      <td>Un valor escalar, un [diccionario de Python](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-dictionary/) o una Serie para reemplazar los valores NaN</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`method`</td>
      <td>Indica el método de relleno: relleno hacia delante (`ffill`) o relleno hacia atrás (`bfill`)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Determina a lo largo de qué eje se va a realizar la operación (0 o `index` para las filas, 1 o `columns` para las columnas)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Si es `True`, los cambios se realizan directamente en el DataFrame original</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`limit`</td>
      <td>Entero que limita el número de valores NaN a reemplazar</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

Nota Es **probable que el parámetro `method` deje de ser compatible** en futuras versiones. Los desarrolladores podrán utilizar entonces `obj.ffill()` o `obj.bfill()`, respectivamente, ya que tienen el mismo efecto que el parámetro `method`.

## Uso del método `DataFrame.fillna()` de Pandas

Existen diferentes formas de utilizar la función `fillna()` de Pandas:

### Reemplazo de valores NaN por un valor fijo

El primer paso consiste en definir un DataFrame:

```python
import pandas as pd
# Ejemplo de DataFrame con diferentes valores
data = {
    'A': [1, 2, None, 4],
    'B': [None, 2, 3, 4],
    'C': [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)
```

El aspecto del DataFrame que acabamos de definir es el siguiente:

```none
A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  NaN
2  NaN  3.0  3.0
3  4.0  4.0  4.0
```

Nota Ten en cuenta que, en Pandas, el valor `None` se interpreta como `NaN` en DataFrames y Series.

Ahora puedes utilizar la función `fillna()` de Pandas para reemplazar los valores faltantes por el valor 0:

```python
# Reemplazo de los valores faltantes por el valor 0
df_filled = df.fillna(0)
print(df_filled)
```

Todos los valores NaN incluidos en la función han sido reemplazados por 0:

```none
A    B    C
0  1.0  0.0  1.0
1  2.0  2.0  0.0
2  0.0  3.0  3.0
3  4.0  4.0  4.0
```

### Uso del método de relleno hacia delante `ffill`

El método `ffill` puede utilizarse para rellenar los valores NaN con los valores anteriores de cada columna. Para ello, hay que pasarlo como parámetro a la función:

```python
# Reemplazo de todos los valores NaN por el valor anterior
df_ffill = df.fillna(method='ffill')
print(df_ffill)
```

En este ejemplo, los valores NaN en las columnas “A” y “C” se han reemplazado por los valores anteriores en la misma columna. Como en la columna “B” no había ningún valor anterior, se mantiene el valor NaN:

```none
A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  1.0
2  2.0  3.0  3.0
3  4.0  4.0  4.0
```

### Uso del método de relleno hacia atrás `bfill` por filas

Los valores NaN también se pueden rellenar con los valores posteriores de la misma fila. Para ello, debes usar el método `bfill` y, además, establecer el parámetro `axis` en 1:

```python
df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)
```

Como resultado, los valores NaN en la fila cero y la fila dos han sido reemplazados por sus valores posteriores, respectivamente. En la primera fila queda un valor NaN, ya que en esa fila no existe ningún valor posterior con el que reemplazarlo.

```none
A    B    C
0  1.0  1.0  1.0
1  2.0  2.0  NaN
2  3.0  3.0  3.0
3  4.0  4.0  4.0
```


This is a markdown version of: [https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-pandas-dataframe-fillna/](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-pandas-dataframe-fillna/) for AI/LLM consumption.