Manipulação de dados desnormalizados em Python: Utilizando re e lstrip()

Ana Carolina Fonseca Barreto - Mar 28 - - Dev Community

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})')

Enter fullscreen mode Exit fullscreen mode

Explicação do padrão:

  1. \(?(\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.

  2. [-\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.

  3. (\d{4}) corresponde aos próximos quatro dígitos do número de telefone, que representam o prefixo do número.

  4. [-\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.

  5. (\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]}")

Enter fullscreen mode Exit fullscreen mode

Resultado após o tratamento:

(123) 4156-7890
(123) 4156-7890
(123) 4156-7890

Enter fullscreen mode Exit fullscreen mode

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)

Enter fullscreen mode Exit fullscreen mode

Resultado após o tratamento:

usuario1
usuario2
usuario3

Enter fullscreen mode Exit fullscreen mode

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.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .