Forem

Ana Carolina Fonseca Barreto for WoMakersCode

Posted on

2 1

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

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.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay