import pandas as pd import os import re # Caminhos (ajuste aqui conforme necessário) pasta_entrada = r"C:\Users\andressa.rocha\Downloads\preço venda eud" pasta_saida = r"C:\Users\andressa.rocha\Downloads" # corrigi "CC:\..." para "C:\..." tabelas = [] print(f"\n📂 Buscando arquivos .xlsx em: {pasta_entrada}\n") for raiz, subpastas, arquivos in os.walk(pasta_entrada): for arquivo in arquivos: if arquivo.endswith(".xlsx") and not arquivo.startswith("~$"): caminho_arquivo = os.path.join(raiz, arquivo) try: df = pd.read_excel(caminho_arquivo, engine="openpyxl") if df.empty: print(f"⚠️ Ignorado (vazio): {arquivo}") continue df["Arquivo_Origem"] = arquivo tabelas.append(df) print(f"✅ Lido: {caminho_arquivo}") except Exception as e: print(f"❌ Erro ao ler {caminho_arquivo}: {e}") if not tabelas: print("\n⚠️ Nenhum arquivo Excel válido foi processado.") else: df_unificado = pd.concat(tabelas, ignore_index=True) # Identificar coluna de região dinamicamente (agora lidando com nomes não-string) col_regiao = None for col in df_unificado.columns: if pd.isna(col): continue col_str = str(col) col_lower = col_str.lower().replace('ã', 'a').replace('á','a').replace('à','a').replace('â','a').replace('ä','a') if 'regiao' in col_lower or 'região' in col_lower: col_regiao = col break if col_regiao is None: print("⚠️ Coluna de região não encontrada! Nenhum filtro será aplicado.") else: # garantir que coluna exista e converter para string seguro df_unificado[col_regiao] = df_unificado[col_regiao].astype(str).str.strip().str.upper() df_unificado = df_unificado[df_unificado[col_regiao] == 'NNE'] # Criar coluna 'Campanha' com valor fixo (ajuste se quiser) df_unificado["Campanha"] = "Campanha 1" # Função para classificar 'Tipo_Campanha' (trata se coluna não existir) def classificar_tipo_promo(texto): if pd.isna(texto) or str(texto).strip() == '': return "promoção" texto = str(texto).lower() padrao = r"^(lanc|lanç|lançamento|lancamento)" if re.search(padrao, texto): return "lançamento" return "promoção" # Aplicar com segurança caso a coluna exista; se não existir, cria a coluna com "promoção" coluna_tipo_promocao = None for col in df_unificado.columns: if pd.isna(col): continue if 'tipo' in str(col).lower() and 'promo' in str(col).lower(): coluna_tipo_promocao = col break if coluna_tipo_promocao: df_unificado["Tipo_Campanha"] = df_unificado[coluna_tipo_promocao].apply(classificar_tipo_promo) else: print("⚠️ Coluna 'Tipo de promoção' não encontrada. Todas classificadas como 'promoção'.") df_unificado["Tipo_Campanha"] = "promoção" # --- ETAPA NOVA: Expansão por Canal --- mapeamento_canal = { "Loja": ["LOJA", "VD", "CD"], "Ecomm": ["Ecomn", "CD"], # mantive seu mapeamento original; ajuste se quiser "Ecomm" "VD": ["VD", "CD"], "Loja | VD": ["LOJA", "VD", "CD"], "Loja |Ecomn": ["LOJA", "VD", "CD"], "Todos": ["LOJA", "VD", "CD"], } def canais_para_promocoes(valor):