Manipulação de dados desnormalizados em Python: Utilizando re e lstrip()
Tags: python, beginners, regex, wecoded
Published: 2024-03-28 12:12:13

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. 
<br>
### 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:

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]}")

```
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.
<br>
### 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.
<br>
### 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.