Limpeza de Dados em Python: Tratando Valores Ausentes e Duplicados

Na ciência de dados e análise, a maior parte do tempo não é gasta criando modelos, mas limpando dados. Bases de dados do mundo real geralmente vêm com valores ausentes, duplicados ou inconsistentes, e aprender a tratar esses problemas é essencial para qualquer analista ou cientista de dados.

Neste artigo, você vai aprender:

  • Como identificar e tratar valores ausentes (NaN).

  • Como remover ou substituir valores duplicados.

  • Técnicas de preenchimento de dados (imputação).

  • Exemplos práticos usando Pandas.



🔹 1. Preparando o ambiente

Certifique-se de ter o Pandas instalado:

pip install pandas

E importe no seu código:

import pandas as pd

🔹 2. Criando um dataset com problemas

Vamos criar um exemplo de dataset com valores ausentes e duplicados:

import numpy as np

dados = {
    "nome": ["Ana", "Bruno", "Carlos", "Ana", "Diana", "Eduardo", None],
    "idade": [25, 30, np.nan, 25, 40, None, 22],
    "cidade": ["São Paulo", "Rio", "Rio", "São Paulo", None, "Belo Horizonte", "Curitiba"]
}

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

Saída:

      nome  idade          cidade
0      Ana   25.0       São Paulo
1    Bruno   30.0             Rio
2   Carlos    NaN             Rio
3      Ana   25.0       São Paulo
4    Diana   40.0            None
5  Eduardo    NaN  Belo Horizonte
6     None   22.0        Curitiba

Perceba os problemas:
✅ Valores ausentes em nomeidade e cidade.
✅ Valores duplicados (Ana aparece 2 vezes com os mesmos dados).


🔹 3. Tratando valores ausentes (NaN)

3.1. Detectando valores ausentes

print(df.isnull().sum())

Saída:

nome     1
idade    2
cidade   1
dtype: int64

3.2. Removendo linhas com valores ausentes

df_drop = df.dropna()
print(df_drop)

👉 Isso elimina qualquer linha que tenha pelo menos um valor ausente.


3.3. Preenchendo valores ausentes com valor fixo

df_fill = df.fillna({"nome": "Desconhecido", "idade": 0, "cidade": "Não informado"})
print(df_fill)

👉 Boa prática para evitar perder dados, mas cuidado para não distorcer análises.


3.4. Preenchendo valores ausentes com média ou mediana

df["idade"].fillna(df["idade"].mean(), inplace=True)
print(df)

👉 Aqui, valores ausentes em idade foram substituídos pela média das idades existentes.


🔹 4. Tratando valores duplicados

4.1. Detectando duplicados

print(df.duplicated())

Saída (True = duplicado):

0    False
1    False
2    False
3     True
4    False
5    False
6    False
dtype: bool

4.2. Removendo duplicados

df_sem_duplicados = df.drop_duplicates()
print(df_sem_duplicados)

👉 Isso garante que não existam registros repetidos.


🔹 5. Exemplo prático completo

# Dataset inicial com problemas
print("Dataset original:")
print(df)

# 1. Preencher idade ausente com média
df["idade"].fillna(df["idade"].mean(), inplace=True)

# 2. Preencher nome e cidade ausentes com valores fixos
df.fillna({"nome": "Desconhecido", "cidade": "Não informado"}, inplace=True)

# 3. Remover duplicados
df = df.drop_duplicates()

print("\nDataset limpo:")
print(df)

Saída final:

        nome  idade          cidade
0        Ana   25.0       São Paulo
1      Bruno   30.0             Rio
2     Carlos   29.4             Rio
4      Diana   40.0  Não informado
5    Eduardo   29.4  Belo Horizonte
6  Desconhecido   22.0        Curitiba

Agora o dataset está limpo, consistente e pronto para análise. 🚀


🔹 6. Conclusão

A limpeza de dados é um dos passos mais importantes no fluxo de trabalho de análise.
Com Pandas, você consegue:

✅ Detectar valores ausentes (isnull)
✅ Preencher lacunas (fillna) ou remover linhas (dropna)
✅ Tratar duplicados (drop_duplicates)

Essa etapa garante que suas análises e modelos sejam mais confiáveis e precisos.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Manipulação de Arquivos no C#: Como Ler, Escrever e Trabalhar com Arquivos de Forma Simples

Laços de Repetição em Python: Conceitos e Exemplos Práticos