Carregando o dataset e primeiras inspeções
O Pandas oferece a função read_csv() para carregar dados em um DataFrame. Essa é a estrutura tabular central da ferramenta.
A inspeção inicial combina métodos simples. É possível verificar as primeiras linhas, o número de colunas, os tipos inferidos e um resumo estatístico.
Na nossa loja de eletrônicos fictícia, imagine uma planilha com identificador do pedido, produto e preço. A leitura inicial pode revelar que a coluna de preço foi lida como texto. Essa etapa funciona como um diagnóstico antes da intervenção corretiva.
Veja como aplicar essas funções de inspeção no código:
import pandas as pd
# Carregar o arquivo CSV
df = pd.read_csv('vendas.csv')
# Visualizar as primeiras linhas
print(df.head())
# Checar formato e tipos das colunas
print(df.info())
# Gerar resumo estatístico numérico
print(df.describe())
Padronizar textos e datas evita falhas de agrupamento. Espaços extras e letras maiúsculas misturadas separam dados iguais.
A coluna de estado do cliente pode conter variações como “SP” e “sp”. Aplicar funções de texto remove os espaços em branco. A conversão para caixa alta uniformiza toda a base.
A coluna de data também exige conversão unificada para viabilizar relatórios por mês ou ano.
Acompanhe os códigos de padronização de texto e data:
# Remover espaços extras nas extremidades
df['estado'] = df['estado'].str.strip()
# Converter todos os textos para letras maiúsculas
df['estado'] = df['estado'].str.upper()
# Uniformizar formatos de data
df['data_venda'] = pd.to_datetime(df['data_venda'])
Conversão de tipos de dados
Funções de conversão ajustam a natureza das colunas e evitam quebras no sistema.
Quando uma coluna de preço possui símbolos de moeda, o Python a interpreta como texto. Cálculos matemáticos produzirão erros nesta condição.
Para corrigir o faturamento, precisamos remover os caracteres e aplicar a função to_numeric(). Essa mudança transforma a string em um número válido.
Veja como ajustar os tipos de dados:
# Verificar os tipos atuais de cada coluna
print(df.dtypes)
# Substituir e remover texto indesejado
df['preco'] = df['preco'].str.replace('R$', '', regex=False)
df['preco'] = df['preco'].str.replace(',', '.', regex=False)
# Converter a coluna de texto para formato numérico
df['preco'] = pd.to_numeric(df['preco'])
Identificando e tratando valores ausentes
Agora que nossos dados estão com os formatos corretos, podemos lidar com lacunas. O Pandas permite remover ou preencher dados faltantes por meio dos métodos dropna() e fillna().
A escolha entre remover uma linha ou substituir o valor depende do impacto na análise. É preciso avaliar o volume de lacunas e a importância matemática da variável.
Na planilha da loja, a coluna de quantidade possui células vazias. Descartar essas linhas funciona quando a perda não compromete a amostra total.
Confira a aplicação prática do tratamento de valores nulos:
# Contar total de células vazias por coluna
print(df.isnull().sum())
# Remover todas as linhas com valores nulos
df_sem_nulos = df.dropna()
# Preencher células vazias com valor fixo (ex: zero)
df['quantidade'] = df['quantidade'].fillna(0)
# Preencher células vazias com a média da coluna (agora funciona, pois 'preco' é número!)
media_preco = df['preco'].mean()
df['preco'] = df['preco'].fillna(media_preco)
Removendo duplicatas
Registros duplicados distorcem contagens e somas. Eles atribuem peso financeiro ou estatístico extra ao mesmo evento.
O método drop_duplicates() identifica e elimina linhas repetidas. Ele avalia todas as colunas da planilha por padrão, mas aceita direcionamentos específicos.
Se a loja tiver dois registros com o mesmo identificador de pedido, ocorreu uma falha de importação. Aplicar a função focada na coluna do identificador evita manter duplicatas parciais no sistema.
Observe como eliminar as linhas repetidas:
# Contar o número de linhas repetidas
print(df.duplicated().sum())
# Remover duplicatas considerando todas as colunas
df = df.drop_duplicates()
# Remover duplicatas com foco apenas em uma coluna específica
df = df.drop_duplicates(subset=['id_pedido'])
Tratamento de valores atípicos (Outliers)
O intervalo interquartil (IQR) ajuda a detectar outliers numéricos. O método calcula a diferença de proporção entre o terceiro e o primeiro quartil da base.
Um pedido com valor muito alto pode ser uma venda em lote ou um erro de digitação de um funcionário. Avaliar a origem da discrepância evita a exclusão de faturamentos reais da empresa.
Entenda como isolar os valores atípicos no código:
# Calcular o 1º Quartil (Q1)
q1 = df['preco'].quantile(0.25)
# Calcular o 3º Quartil (Q3)
q3 = df['preco'].quantile(0.75)
# Calcular o limite máximo aceitável (IQR)
iqr = q3 - q1
limite_maximo = q3 + 1.5 * iqr
# Filtrar a base mantendo apenas os valores válidos
df_limpo = df[(df['preco'] <= limite_maximo)]
Salvando a base limpa
Após diagnosticar falhas, formatar strings, corrigir tipos, preencher vazios, remover duplicatas e tratar outliers, o processo de limpeza está concluído.
Para que essas correções não se percam quando o Python for fechado, é fundamental exportar o DataFrame limpo para um novo arquivo.
Usamos o parâmetro index=False para evitar que o Pandas crie uma coluna extra com a numeração das linhas.
Python
# Salvar o dataset tratado em um novo arquivo CSV
df_limpo.to_csv('vendas_limpo.csv', index=False)
print("Limpeza concluída e arquivo salvo com sucesso!")
Perguntas Frequentes (FAQ)
Qual biblioteca Python é mais indicada para limpeza de dados?
O Pandas é a biblioteca mais adotada pelo mercado. Ele reúne operações de leitura, diagnóstico e tratamento matemático em uma única interface.
Como converter uma coluna de texto em data no Pandas?
Use a função pd.to_datetime(). Ela transforma formatos diferentes em um tipo unificado para viabilizar ordenações cronológicas.
É necessário sempre remover linhas com valores ausentes?
Não. A exclusão é indicada apenas quando o volume de vazios é pequeno. Preencher os espaços em branco com médias preserva as informações originais das outras colunas.
Outliers identificados pelo IQR devem sempre ser removidos?
Não. A fórmula aponta desvios matemáticos. A decisão de apagar o registro exige uma investigação sobre a origem daquele número discrepante.
Qual a diferença entre limpar dados e normalizar dados?
A limpeza corrige falhas de preenchimento da base. A normalização reescala números para um intervalo comum e costuma focar na preparação para modelos de inteligência artificial.
É possível automatizar o processo de limpeza de dados?
As funções em lote permitem a automação técnica do código. As decisões interpretativas sobre outliers e dados nulos continuam exigindo o raciocínio humano.
Preciso validar os dados depois de aplicar as etapas de limpeza?
Sim. Repita a inspeção geral com a contagem de nulos e os resumos para garantir que as alterações funcionaram de forma correta.
Se você quer ingressar ou crescer no mercado da IA, a Allevo Tech oferece formações práticas em áreas de alta demanda, como Engenharia de Software, Ciência de Dados e Inteligência Artificial.
As trilhas são estruturadas para desenvolver competências técnicas e preparar você para os desafios do mercado de trabalho.
Clique no botão abaixo e conheça as formações da Allevo Tech que podem impulsionar a sua trajetória profissional.