Arquivos CSV e planilhas Excel frequentemente chegam corrompidos por inconsistências: números formatados como texto, símbolos de moeda misturados a valores numéricos, separadores decimais conflitantes e caracteres espúrios em campos que deveriam ser estritamente quantitativos. Quando pipelines de dados ou modelos de aprendizado de máquina consomem essas fontes sem o devido saneamento, o resultado inevitável são erros de tipagem (TypeError), valores nulos indesejados (NaN) e perda de integridade analítica.
Neste guia, você aprenderá a estruturar um fluxo técnico eficiente em Python para identificar, limpar e padronizar colunas com tipos de dados mistos em múltiplos arquivos.
O Desafio dos Dados Mistos em Lote
Em ambientes operacionais, os dados costumam ser exportados de diferentes sistemas legados. Uma única coluna que deveria representar faturamento pode conter:
- Strings como
"R$ 1.250,50"ou"1250.50". - Notações com ponto e vírgula invertidos.
- Textos de controle como
"N/A","pendente"ou"-"misturados a números reais. - Espaços invisíveis (whitespace) e caracteres não imprimíveis.
Processar esses arquivos manualmente no Excel é inviável em grande escala e altamente suscetível a erros. A abordagem recomendada é construir um pipeline automatizado com pandas e expressões regulares (re).
Pipeline Automatizado de Limpeza com Pandas
Para lidar com grandes volumes com alto desempenho, implementamos funções vetorizadas que tratam o texto antes da coerção para tipos numéricos.
python
import re
import numpy as np
import pandas as pd
from pathlib import Path
def sanitizarcamponumerico(valor):
“””
Normaliza strings com valores mistos para float,
tratando formatos brasileiros (1.000,00) e internacionais (1,000.00).
“””
if pd.isna(valor):
return np.nan
texto = str(valor).strip()
# Remove símbolos de moeda e caracteres alfanuméricos residuais
texto = re.sub(r"[^0-9,.-]", "", texto)
if not texto or texto == "-":
return np.nan
# Trata padrão brasileiro: remove ponto de milhar e troca vírgula por ponto
if "," in texto and "." in texto:
if texto.rfind(",") > texto.rfind("."):
texto = texto.replace(".", "").replace(",", ".")
else:
texto = texto.replace(",", "")
elif "," in texto:
texto = texto.replace(",", ".")
try:
return float(texto)
except ValueError:
return np.nan
def processararquivos(diretorioorigem: str, diretoriodestino: str, colunasnumericas: list):
“””
Processa em lote arquivos CSV e Excel, aplicando limpeza estruturada.
“””
origem = Path(diretorioorigem)
destino = Path(diretoriodestino)
destino.mkdir(parents=True, exist_ok=True)
arquivos = list(origem.glob("*.csv")) + list(origem.glob("*.xlsx"))
for caminho in arquivos:
if caminho.suffix == ".csv":
df = pd.read_csv(caminho, dtype=str, keep_default_na=False)
else:
df = pd.read_excel(caminho, dtype=str)
# Aplica saneamento nas colunas com conteúdo misto
for coluna in colunas_numericas:
if coluna in df.columns:
df[coluna] = df[coluna].apply(sanitizar_campo_numerico)
# Remove espaços em branco redundantes nas colunas de texto restantes
colunas_texto = df.select_dtypes(include=["object"]).columns
for col in colunas_texto:
df
= df
.astype(str).str.strip()
saida_caminho = destino / f"cleaned_{caminho.stem}.parquet"
df.to_parquet(saida_caminho, index=False)
print(f"Processado com sucesso: {saida_caminho.name}")
Boas Práticas para Estruturação de Dados
- Exportação em Formato Otimizado: Após a limpeza, exportar para formatos colunares como
Parquetpreserva a tipagem estrita (inteiros, floats, datas) e reduz o consumo de memória em até 80% comparado ao CSV. - Validação com Schemas: Utilizar bibliotecas como
PydanticouPanderagarante que registros fora do padrão disparem alertas automáticos em vez de quebrar a esteira de processamento. - Isolamento de Erros: Registros não conversíveis devem ser roteados para uma tabela de quarentena para auditoria, evitando descarte silencioso de informações.
Otimização e Inteligência de Dados
Como especialista em IA e engenharia de dados, desenvolvo rotinas que vão além da limpeza sintática básica. A integração de regras de negócio avançadas, detecção de padrões via aprendizado não supervisionado e automação distribuída transformam repositórios de dados fragmentados em bases sólidas para inteligência analítica e modelos preditivos.
Se a sua empresa precisa automatizar o tratamento de grandes volumes de dados complexos, migrar planilhas legadas ou estruturar um pipeline resiliente, entre em contato para desenharmos uma solução sob medida.


