O tratamento de dados desnormalizados é essencial para garantir a qualidade e a consistência dos dados antes de realizar análises ou modelagem. Neste artigo, exploraremos duas ferramentas poderosas em Python para lidar com dados desnormalizados: o módulo re para manipulação de strings usando expressões regulares e o método lstrip() para remover espaços em branco e zeros à esquerda de uma string.
Manipulação de strings com o módulo re
O módulo re em Python fornece suporte para expressões regulares, permitindo a busca e manipulação de padrões em strings. Isso é útil para limpar e transformar dados desnormalizados, especialmente quando os dados estão em formatos complexos ou inconsistentes.
Padrão de expressão regular:
Antes de prosseguirmos para os exemplos, vamos analisar o padrão de expressão regular utilizado para identificar e normalizar números de telefone:
import re
padrao = re.compile(r'\(?(\d{3})\)?[-\s]?(\d{4})[-\s]?(\d{4})')
Explicação do padrão:
\(?(\d{3})\)?
corresponde a um código de área de telefone de três dígitos opcional, que pode estar entre parênteses ou não. O \d{3} corresponde a três dígitos numéricos (0-9) para o código de área.[-\s]?
corresponde a um hífen - ou a um espaço em branco \s, que podem ou não estar presentes após o código de área.(\d{4})
corresponde aos próximos quatro dígitos do número de telefone, que representam o prefixo do número.[-\s]?
novamente, corresponde a um hífen - ou a um espaço em branco \s, que podem ou não estar presentes após o prefixo do número.(\d{4})
e por fim, corresponde aos últimos quatro dígitos do número de telefone, que representam a parte final do número.
Exemplo de uso:
Agora que entendemos o padrão de expressão regular, vamos aplicá-lo para normalizar números de telefone em diferentes formatos:
import re
# String com números de telefone em diferentes formatos
texto = "(123) 4156-7890, 123 4156 7890, 123-4156-7890"
# Padronizar o formato dos números de telefone
padrao = re.compile(r'\(?(\d{3})\)?[-\s]?(\d{4})[-\s]?(\d{4})')
numeros_telefone = padrao.findall(texto)
# Imprimir os números de telefone normalizados
for numero in numeros_telefone:
print(f"({numero[0]}) {numero[1]}-{numero[2]}")
Resultado após o tratamento:
(123) 4156-7890
(123) 4156-7890
(123) 4156-7890
Neste exemplo, usamos uma expressão regular para identificar os números de telefone em diferentes formatos e os normalizamos para o formato (123) 4156-7890.
Remoção de dados extras à esquerda com lstrip()
O método lstrip() é uma função de string em Python que remove espaços em branco e zeros à esquerda de uma string. Isso é útil para limpar dados desnormalizados, especialmente quando há inconsistências e informações extras adicionadas à esquerda para preencher todos os caracteres de um campo.
Exemplo de uso:
Suponha que tenhamos uma lista de nomes de usuários, mas alguns deles possuem espaços em branco e zeros extras à esquerda. Podemos usar o método lstrip() para resolver esse problema.
# Lista de nomes de usuários com espaços em branco e 0 à esquerda
nomes_usuarios = [" usuario1", "usuario2", "000usuario3"]
# Remover espaços em branco dos nomes de usuários
nomes_limpos = [nome.lstrip() for nome in nomes_usuarios]
# Remover 0 à esquerda dos nomes de usuários
nomes_limpos = [nome.lstrip('0') for nome in nomes_limpos]
# Imprimir os nomes de usuários limpos
for nome in nomes_limpos:
print(nome)
Resultado após o tratamento:
usuario1
usuario2
usuario3
Neste exemplo, usamos lstrip() para remover espaços em branco e lstrip('0') para zeros à esquerda dos nomes de usuários, garantindo consistência nos dados.
Conclusão
O tratamento de dados desnormalizados é uma etapa fundamental na preparação dos dados para análise e modelagem.
Nesse artigo vimos um pouco sobre o módulo re que é como uma varinha mágica, nos ajudando a encontrar e transformar padrões complexos em algo mais organizado. E o método lstrip() que dá aquela força com a limpeza de informações extras à esquerda.
Além dessas opções, existem outras abordagens disponíveis para lidar com dados desnormalizados:
Módulos de Processamento de Dados: Bibliotecas como pandas oferecem uma variedade de funções para limpeza e transformação de dados, sendo amplamente utilizadas em análise de dados.
Limpeza Manual: Em alguns casos, especialmente quando os dados apresentam padrões complexos, pode ser necessário realizar a limpeza manualmente, utilizando estruturas de controle em Python.
Bibliotecas de Aprendizado de Máquina: Para análise de dados voltada para aprendizado de máquina, bibliotecas como scikit-learn fornecem funcionalidades para lidar com dados desnormalizados, como a codificação de variáveis categóricas.
A escolha da abordagem mais adequada dependerá da natureza dos dados, dos requisitos do projeto e das preferências individuais.