Limpeza e Padronização de Inventário de E-commerce com Python: Do Caos à Automação

Aprenda a tratar planilhas brutas de inventário de e-commerce usando Python e Pandas. Automatize a extração de atributos, deduplicação e validação de dados.

Planilhas de inventário no comércio eletrônico frequentemente chegam corrompidas por erros manuais, extrações incompletas ou integrações de APIs inconsistentes. No setor de beleza e cosméticos, a complexidade aumenta: variações de volume (ex.: ’50ml’, ’50 ml’, ‘0.05L’), tons de maquiagem, códigos de barras ausentes e nomes de marcas truncados inviabilizam operações de precificação, gestão de estoque e sincronização em marketplaces como o JioMart.

Neste artigo, você aprenderá a estruturar um pipeline em Python para higienizar, validar e enriquecer catálogos de produtos brutos, transformando dados desestruturados em uma base confiável e pronta para produção.


O Desafio dos Dados Brutos em Cosméticos e E-commerce

Planilhas brutas de categorias como Beauty & Personal Care costumam apresentar quatro problemas críticos:

  1. Atributos misturados nos títulos: Marcas, pesos e volumes inseridos de forma inconsistente no campo de descrição.
  2. Inconsistência de tipos de dados: Preços salvos como texto misturados a moedas, estoques nulos tratados como zero ou strings vazias.
  3. Registros duplicados disfarçados: O mesmo produto cadastrado com pequenos desvios tipográficos ou pontuações divergentes.
  4. Quebra de taxonomia: Falta de alinhamento com a árvore de categorias exigida pelo marketplace.

Resolver esses problemas manualmente em centenas de milhares de linhas é inviável. A abordagem correta envolve scripts de engenharia de dados orientados a regras determinísticas e processamento de linguagem natural.


Passo 1: Ingestão Eficiente e Diagnóstico Inicial

O primeiro passo consiste em carregar o arquivo bruto e identificar anomalias estruturais sem sobrecarregar a memória:

python
import pandas as pd
import numpy as np

def carregarinventario(caminhoarquivo: str) -> pd.DataFrame:
# Carregamento com tratamento de codificação e tipos preliminares
df = pd.readexcel(caminhoarquivo, engine=’openpyxl’)

# Padronização de nomes de colunas
df.columns = df.columns.str.strip().str.lower().str.replace(' ', '_')

return df

dfbruto = carregarinventario(‘jiomartbeautyraw.xlsx’)
print(df_bruto.info())

Essa etapa garante que espaços ocultos em cabeçalhos não gerem erros posteriores em etapas de filtragem.


Passo 2: Extração de Atributos com Expressões Regulares (Regex)

Em cosméticos, o volume ou peso é essencial para desmembrar variações de SKU. É comum o volume estar inserido no final do título do produto (ex.: “Hidratante Facial Neutrogena Hydro Boost 50g”).

python
import re

def extrair_volume(titulo: str) -> str:
if not isinstance(titulo, str):
return np.nan

# Padrão para capturar volumes como 50ml, 100 g, 1.5l, etc.
padrao = r'(d+(?:.d+)?s*(?:ml|g|kg|l|oz|fl.?s*oz))'
resultado = re.search(padrao, titulo, flags=re.IGNORECASE)

return resultado.group(1).lower().replace(' ', '') if resultado else np.nan

Aplicando ao catálogo

dfbruto[‘volumepadronizado’] = dfbruto[‘nomeproduto’].apply(extrair_volume)

Isolar métricas estruturadas permite filtrar produtos e criar filtros facetados no e-commerce sem depender de revisão humana.


Passo 3: Limpeza Numérica e Conversão de Moedas

Campos de preço e estoque frequentemente trazem símbolos monetários ou separadores incorretos:

python
def sanitizarvaloresmonetarios(coluna: pd.Series) -> pd.Series:
return (
coluna.astype(str)
.str.replace(r'[^0-9.,]’, ”, regex=True)
.str.replace(‘,’, ‘.’)
.astype(float)
)

dfbruto[‘precolimpo’] = sanitizarvaloresmonetarios(dfbruto[‘precovenda’])
dfbruto[‘estoque’] = pd.tonumeric(df_bruto[‘estoque’], errors=’coerce’).fillna(0).astype(int)


Passo 4: Deduplicação Fuzzy e Correspondência de Marcas

Como especialista em IA e engenharia de dados, frequentemente vejo empresas lidando com duplicatas que escapam do .drop_duplicates(). Variações como “L’Oréal” e “Loreal Paris” precisam ser tratadas via normalização textual ou algoritmos de similaridade como Levenshtein:

python
from rapidfuzz import process, fuzz

marcas_canonicas = [‘L’Oréal’, ‘Nivea’, ‘Neutrogena’, ‘Maybelline’, ‘Cetaphil’]

def normalizarmarca(nomeencontrado: str, cortesimilaridade: float = 85.0) -> str:
if not isinstance(nome
encontrado, str):
return ‘Outros’

match = process.extractOne(
    nome_encontrado, 
    marcas_canonicas, 
    scorer=fuzz.token_sort_ratio
)

if match and match[1] >= corte_similaridade:
    return match[0]
return nome_encontrado.title()

dfbruto[‘marcacanonizada’] = dfbruto[‘marcadeclarada’].apply(normalizar_marca)


Passo 5: Validação do Schema com Pydantic

Antes de persistir os dados no banco de dados ou reexportar para o marketplace, aplicamos regras estritas de validação para impedir que novos registros inválidos entrem em produção:

python
from pydantic import BaseModel, Field, ValidationError
from typing import Optional

class ItemBelezaValidado(BaseModel):
sku: str
nomeproduto: str
marca
canonizada: str
precolimpo: float = Field(gt=0, description=”O preço deve ser positivo”)
estoque: int = Field(ge=0)
volume
padronizado: Optional[str]

registrosvalidos = [] registroscom_erro = []

for linha in dfbruto.todict(orient=’records’):
try:
item = ItemBelezaValidado(**linha)
registrosvalidos.append(item.modeldump())
except ValidationError as err:
registroscomerro.append({‘sku’: linha.get(‘sku’), ‘erros’: err.errors()})

dffinal = pd.DataFrame(registrosvalidos)


Arquitetura de um Pipeline de Inventário Sustentável

O processo manual de higienizar arquivos toda semana não escala. Uma estrutura automatizada eficiente opera sob o seguinte fluxo:

  1. Watcher ou Webhook: Detecta novos arquivos ou atualizações no ERP/Marketplace.
  2. Módulo de Parsing: Limpa strings, extrai entidades e normaliza campos críticos.
  3. Validação de Negócio: Aplica esquemas rígidos e isola produtos inconsistentes em filas de auditoria.
  4. Carga e Exportação: Atualiza a base consolidada sem intervenção manual.

Conclusão e Próximos Passos

Manter um catálogo de cosméticos limpo e padronizado não é apenas uma exigência estética: reduz devoluções, viabiliza algoritmos de precificação dinâmica e melhora o ranqueamento em plataformas como o JioMart.

Se a sua empresa lida com inventários fragmentados, integrações complexas ou catálogos extensos que demandam automação avançada com Python e Inteligência Artificial, posso ajudar a projetar uma solução robusta para o seu negócio. Entre em contato para uma consultoria técnica personalizada.

Preencha o formulário abaixo para que eu consiga entrar em contato com você.