TRATAMENTO DE DADOS COM PYTHON

Implantar soluções customizadas para os nossos clientes exige agilidade na construção e entrega dos sistemas. Planejar as etapas de produção e definir os caminhos certos, nem sempre nos livra de desafios gigantes que podem consumir muito tempo para resolver!

Recentemente nos deparamos com um destes desafios! O cliente nos entregou uma planilha com quase 10 mil linhas divididas por 18 colunas – praticamente 180 mil células com dados! Cada linha correspondia a pelo menos um arquivo JPG. Então deveríamos ter pelo menos 10 mil arquivos de imagem, mas tínhamos apenas 2 mil!

Conferir manualmente e corrigir os erros consumiria muito tempo!

A solução foi criar uma automação para identificação das lacunas que precisariam de correção imediata e as imagens que faltavam! Essa automação, além de identificar, corrigia as lacunas e buscava na rede as imagens ausentes correspondentes.

Precisou apenas de uma manhã para resolver o problema de forma precisa – o erro foi menor que 0,2%.

O João Henrique, autor da ideia e da execução da solução, apresenta a seguir como criou essa solução!

A dor!

Você já deve ter se deparado com uma planilha onde havia dados ausentes e foi necessário verificar linha por linha para descobrir quais células possuíam ausência de informações. Hoje, vamos apresentar uma maneira de identificar situações como esta e também, apresentar algumas funções para formatar e editar esta planilha através da biblioteca Pandas do Python.

Por que utilizar o Pandas?

A biblioteca do Pandas permite uma fácil manipulação de dados, possui suporte a diversos formatos de dados, como CSV, Excel, JSON, SQL, entre outros. Consegue lidar com milhões de linhas de dados, facilita a limpeza e transformação dos dados, como identificar valores nulos, conversão do tipo de dado e aplicar funções em colunas.

Por fim, o Pandas, por ser escrito em Python, consegue se integrar com outras bibliotecas, principalmente com bibliotecas de visualização, como Matplotlib e Seaborn, para transformar todas as informações em relatórios e dashboards personalizados.

Então, usamos o Pandas para limpar, transformar e analisar dados, de forma que conseguimos extrair insights e estatísticas das nossas bases de dados. Além de preparar os dados para alimentar Machine Learnings.

Definindo dados com o Pandas

Para começar, vamos criar uma pequena planilha usando o Pandas.
Para isso vamos utilizar este código:


   # DATAFRAME
import pandas as pd
# Criando um DataFrame a partir de um dicionário
dados = {
   ‘Nome’: [‘Ana’, ‘Bruno’, ‘Carlos’],
   ‘Idade’: [23, 35, 29],
   ‘Cidade’: [‘São Paulo’, ‘Rio de Janeiro’, ‘Belo Horizonte’]
}
df = pd.DataFrame(dados)
print(df) # Visualizando o DataFrame

Resultado:


       Nome    Idade    Cidade
0   Ana          23          São Paulo
1   Bruno      35           Rio de Janeiro
2   Carlos     29          Belo Horizonte

Adicionando filtros na tabela

Como é possível filtrar estes dados? Agora vamos mostrar algumas possibilidades de filtros nessa pequena base de dados.

Primeiro, vamos separar uma coluna específica:

  df[‘Nome’] # Seleciona a coluna “Nome”  

Resultado:

  0   Ana
1   Bruno
2   Carlos  

Podemos também, ao invés de escolher uma coluna, ou várias colunas, selecionar uma linha:

  df.iloc[0] # Seleciona a primeira linha  

Resultado:

  Nome        Ana
Idade         23
Cidade     São Paulo  

Suponha que agora você deseja filtrar as pessoas com uma idade maior que 25 anos:

  df[df[‘Idade’] > 25] # Filtra pessoas com idade maior que 25  

Resultado:

       Nome    Idade    Cidade
1   Bruno     35         Rio de Janeiro
2   Carlos     29         Belo Horizonte  

Por último, caso você queira ordenar por ordem alfabética ou crescente, basta utilizar:

  df.sort_values(‘Idade’, ascending=False) # Ordena por idade em ordem decrescente  

Resultado:

       Nome    Idade    Cidade
1   Bruno     35         Rio de Janeiro
2   Carlos    29         Belo Horizonte
0   Ana         23          São Paulo  

Essas são algumas brincadeiras simples para se fazer com Python e Pandas, você pode encontrar muitos outros métodos disponíveis na documentação do Pandas (https://pandas.pydata.org/docs/reference/index.html).

Clique aqui para acessar a documentação do Pandas

Descobrindo dados ausentes

Para exemplificar, vamos definir nossos dados sendo imagens, estas imagens não estão descritas na nossa tabela, mas elas estão nomeadas a partir de uma coluna “EAN”, então a ideia é a partir dos produtos presentes na planilha, identificar os produtos que não possuem imagens na pasta especificada.

Para isso, vamos acessar a planilha, fazer a leitura destes dados, criar uma lista com as imagens presentes na pasta e comparar com a coluna EAN da planilha, caso o produto possua imagem esta linha é apagada, sobrando então apenas os produtos com imagens ausentes.

Código referência:
import os
import pandas as pd

# 🔗 Caminho da pasta onde estão as imagens
caminho_imagens = r”seu_caminho_das_imagens”

# Padrão para produtos sem imagem
imgPadrao = “Sem Imagem”

# 📂 Caminho do arquivo Excel
planilha_path = r”caminho_para_planilha\ListaProdutos.xlsx”

# 📊 Carregar a planilha do Excel
planilha = pd.ExcelFile(planilha_path)
df = planilha.parse(‘aba_excel’, dtype=str) # 🔹 Força que tudo seja carregado como string

# 📝 Definindo as colunas da planilha de saída
colunas_necessarias = [
‘CODIGO’,
‘EAN’,
‘MARCA’,
‘PRODUTO’
]

# 🎯 Filtrar apenas as colunas necessárias para a planilha de saída
df_filtrado = df[colunas_necessarias].copy()

# 🖼️ **Verificar imagens existentes**
imagens_existentes = set()
formatos_permitidos = [“jpg”, “png”, “jpeg”, “tif”, “webp”]
for arquivo in os.listdir(caminho_imagens):
nome, ext = os.path.splitext(arquivo)
if ext[1:].lower() in formatos_permitidos:
imagens_existentes.add(nome.strip()) # 🔹 Removemos espaços para evitar problemas de comparação

# 🎯 **Filtrar apenas os produtos SEM imagem**
df_filtrado[‘IMAGEM’] = df_filtrado[‘EAN’].apply(
lambda ean: imgPadrao if ean not in imagens_existentes else
os.path.join(caminho_imagens, f”{ean}.jpg”)
)

# 🎯 Criar lista de EANs ausentes
df_sem_imagem = df_filtrado[df_filtrado[‘IMAGEM’] == imgPadrao].copy()

# 🏷️Renomear colunas conforme o padrão desejado
df_sem_imagem.rename(columns={
‘CODIGO’: ‘Codigo’,
‘EAN’: ‘Codigo EAN’,
‘MARCA’: ‘Industria’,
‘PRODUTO’: ‘Produto’
}, inplace=True)

# 📁 Definir nome do arquivo de saída
desktop_path = r”caminho_para_salvar_relatorio”
output_path = os.path.join(desktop_path, “Relatorio_Imagens_Ausentes.xlsx”)

# 💾 **Salvar o DataFrame no formato XLSX**
df_sem_imagem.to_excel(output_path, index=False, engine=’openpyxl’)

# 🔹 Exibir informações no terminal
print(“\n✅ Processo concluído!”)
print(f”🔍 Total de produtos analisados: {len(df_filtrado)}”)
print(f”🚨 Total de produtos SEM imagem: {len(df_sem_imagem)}”)
print(f”📂 Arquivo salvo: {output_path}”)

Automatizar processos com inteligência e precisão não é só sobre ganhar tempo é sobre ganhar controle e qualidade.

Se você trabalha com grandes volumes de dados, seja no marketing, na indústria ou no varejo, vale olhar para o Python (e para o Pandas) não como uma barreira técnica, mas como um aliado estratégico. Pequenas soluções, como essa, fazem uma grande diferença no dia a dia e podem transformar o jeito que sua empresa lida com informação.

Quer mais insights como esse?

Acompanhe o blog da Multifluência e descubra como a tecnologia pode (e deve) caminhar junto com a educação corporativa e os desafios reais das organizações.

Marcado:

Deixe um Comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *