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

A função `DataFrame.fillna()` do [Python Pandas](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-pandas/) é usada para **substituir valores ausentes em um DataFrame**. Ela simplifica os processos de limpeza de dados e é uma ferramenta útil para desempenhar análises.

## Qual é a sintaxe da função Pandas `fillna()`?

A função Pandas `fillna()` aceita a inclusão de **até cinco parâmetros** e tem a seguinte estrutura:

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

### Parâmetros importantes da função Pandas `fillna()`

É possível ajustar o comportamento da função Pandas `DataFrame.fillna()` usando diversos parâmetros:

<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>`value`</td>
      <td>Um valor escalar ou [dicionário Python](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-dictionary-dicionarios-python/ "Como usar um dicionário em Python") (ou série) para substituir valores NaN</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`method`</td>
      <td>Especifica o método de preenchimento, que pode ser progressivo (`ffill`) ou regressivo (`bfill`)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Determina em qual eixo desempenhar a operação (0 ou `index` para linhas, 1 ou `columns` para colunas)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Se verdadeiro (`True`), as alterações são feitas diretamente no DataFrame original</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`limit`</td>
      <td>Um número inteiro que limita a quantidade de valores NaN que serão substituídos</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

Nota Nas versões futuras do Pandas, é provável que o parâmetro `method` **deixe de ser suportado**. Em seu lugar, você poderá usar `obj.ffill()` ou `obj.bfill()`, já que essas funções têm o mesmo efeito do parâmetro `method`.

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

A função Pandas `fillna()` pode ser usada de diversas formas diferentes:

### Substituir valores NaN por um valor fixo

Primeiro, vamos criar um DataFrame:

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

O DataFrame ficará assim:

```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 No Pandas, o valor `None` em um DataFrames ou em uma Series é interpretado como `NaN`.

Para substituir os valores ausentes por 0, use a função Pandas `fillna()`:

```python
# Substituir valores ausentes por 0
df_filled = df.fillna(0)
print(df_filled)
```

Como resultado, todos os valores NaN serão substituídos 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
```

### Usar o método de preenchimento progressivo `ffill`

Se quiser substituir os valores NaN pelo mesmo valor que os precede na coluna em que eles estão localizados, use o método `ffill` como parâmetro:

```python
# Substituir todos os valores NaN pelo valor que os precede
df_ffill = df.fillna(method='ffill')
print(df_ffill)
```

Neste exemplo, os campos NaN nas colunas A e C foram preenchidos com os valores que os precediam na mesma coluna. Como não havia nenhum valor precedente na coluna B para a linha 0, o valor NaN foi mantido:

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

### Usar o método de preenchimento regressivo `bfill` nas linhas

Os valores NaN também podem ser substituídos pelos valores seguintes dentro da mesma linha. Para fazer isso, use o método `bfill` e defina o parâmetro `axis` como 1:

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

O resultado mostra que os valores NaN nas linhas 0 e 2 foram substituídos pelos valores que os sucediam. No entanto, o valor NaN na linha 1 foi mantido, já que ele era o último dessa linha:

```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.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-pandas-dataframe-fillna/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-pandas-dataframe-fillna/) for AI/LLM consumption.