(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
Python para dados
Python para dados 4 min

Como tratar valores em falta com pandas em Python

João Barros 04 de July de 2026 4 min de leitura

Os dados do mundo real raramente chegam completos: falta um preco aqui, uma data ali, uma celula vazia acola. Tratar valores em falta com pandas em Python e uma das competencias mais uteis de quem trabalha com dados, porque quase todas as analises enganam ou falham quando ha valores NaN pelo meio. A seguir ves, com exemplos simples, como detetar, remover e preencher esses valores em falta com poucas linhas de codigo.

Pre-requisitos

  • Python 3 instalado no teu computador.
  • A biblioteca pandas instalada (pip install pandas).
  • Saber o que e um DataFrame — uma tabela de linhas e colunas em pandas.
  • Um editor ou notebook a tua escolha, por exemplo VS Code ou Jupyter.

Passo 1: Criar um DataFrame de exemplo

Para praticares sem depender de um ficheiro, comeca por criar uma pequena tabela com alguns valores em falta. Em pandas, um valor em falta aparece como NaN (do ingles Not a Number). Podes cria-lo com None ou com np.nan.

Como tratar valores em falta com pandas em Python
import pandas as pd
import numpy as np

dados = {
    "nome": ["Ana", "Bruno", "Carla", "Diogo"],
    "idade": [28, np.nan, 35, 41],
    "cidade": ["Lisboa", "Porto", None, "Braga"],
}

df = pd.DataFrame(dados)
print(df)

Repara que a idade do Bruno e a cidade da Carla estao vazias. E exatamente este tipo de buraco que vamos aprender a resolver.

Passo 2: Detetar os valores em falta

Antes de decidir o que fazer, e importante saber quantos valores faltam e em que colunas. O metodo isna() devolve True em cada celula vazia (o metodo isnull() faz exatamente o mesmo). Se juntares sum(), obtens a contagem por coluna.

# True/False para cada celula
print(df.isna())

# Contagem de valores em falta por coluna
print(df.isna().sum())

O resultado mostra 1 na coluna idade e 1 na coluna cidade. Agora ja conheces o tamanho do problema e podes escolher a estrategia certa.

Passo 3: Remover linhas com valores em falta

A forma mais direta e apagar as linhas incompletas com dropna(). E rapido, mas tem um risco: se tiveres poucos dados, podes deitar fora informacao valiosa.

# Remove qualquer linha com pelo menos um valor em falta
df_sem_falta = df.dropna()

# Remove apenas quando a idade esta em falta
df_com_idade = df.dropna(subset=["idade"])

Usa o parametro subset quando so uma coluna e mesmo critica. Assim mantens as restantes linhas em vez de as perder todas.

Passo 4: Preencher os valores em falta

Muitas vezes e melhor preencher do que apagar. O metodo fillna() substitui os NaN por um valor a tua escolha. Repara que, em pandas, tens de reatribuir o resultado a coluna para a alteracao ficar guardada.

# Preencher a cidade em falta com um texto
df["cidade"] = df["cidade"].fillna("Desconhecida")

# Preencher a idade com a media das idades existentes
media_idade = df["idade"].mean()
df["idade"] = df["idade"].fillna(media_idade)

Para dados ordenados no tempo, como uma serie de vendas diarias, faz mais sentido repetir o ultimo valor conhecido do que usar uma media. Nesse caso, usa ffill() (preenche para a frente) ou bfill() (para tras). Sao estrategias alternativas — escolhe uma:

# Repete o ultimo valor valido para baixo
df["idade"] = df["idade"].ffill()
Dica: preencher com a media e simples, mas a mediana (median()) costuma ser mais robusta quando existem valores muito extremos.

Verificar o resultado

Depois de tratar os dados, confirma que ja nao sobra nenhum valor em falta. Se tudo correu bem, a contagem deve ser 0 em todas as colunas.

print(df.isna().sum())
print(df)

Se ainda aparecer um numero maior que zero, verifica duas coisas: se aplicaste o preenchimento a coluna certa e se reatribuiste o resultado, como em df["col"] = df["col"].fillna(...). E o erro mais comum de quem esta a comecar.

Conclusao

Ja dominas o essencial para tratar valores em falta com pandas: detetar com isna(), remover com dropna() e preencher com fillna(), ffill() ou bfill(). O proximo passo e decidir a estrategia caso a caso, porque nem sempre apagar e a melhor opcao e nem sempre a media e o valor certo. Olhando para os teus dados, qual destas abordagens faz mais sentido?

Partilhar: