import pandas as pd import os # Caminhos pasta_entrada = r"..\CONSULTA_ESTOQUE" pasta_saida = r"..\SUPRIMENTOS\ANALISE_ESTOQUE\ESTOQUE_UNIFICADO_PDV24" os.makedirs(pasta_saida, exist_ok=True) # Lista subpastas subpastas = [os.path.join(pasta_entrada, d) for d in os.listdir(pasta_entrada) if os.path.isdir(os.path.join(pasta_entrada, d))] df_list = [] for subpasta in subpastas: arquivos = [f for f in os.listdir(subpasta) if f.endswith(".csv")] nome_pasta = os.path.basename(subpasta) try: parte_final = nome_pasta.split('_')[-1] data_estoque = pd.to_datetime(parte_final[:8], format="%Y%m%d", errors='coerce') except Exception: data_estoque = pd.NaT for arquivo in arquivos: caminho_arquivo = os.path.join(subpasta, arquivo) try: df = pd.read_csv(caminho_arquivo, encoding="utf-8", low_memory=False) # Filtrar apenas as colunas desejadas colunas_desejadas = ["SKU", "SKU_PARA", "PDV", "ESTOQUE ATUAL", "DDV PREVISTO", "DESCRIÇÃO", "CATEGORIA"] colunas_existentes = [col for col in colunas_desejadas if col in df.columns] df = df[colunas_existentes].copy() # Filtro PDV que começa com 24 df = df[df["PDV"].astype(str).str.startswith("24")] df["Arquivo_Origem"] = arquivo df["Pasta_Origem"] = nome_pasta df["data_estoque"] = data_estoque df_list.append(df) except Exception as e: print(f"Erro ao ler o arquivo {arquivo}: {e}") # Consolidar e salvar o último estoque de junho if df_list: df_final = pd.concat(df_list, ignore_index=True) df_final["data_estoque"] = pd.to_datetime(df_final["data_estoque"], errors="coerce") df_final = df_final.dropna(subset=["data_estoque"]) # Filtrar anos 2024 e 2025 e apenas mês de junho df_junho = df_final[ (df_final["data_estoque"].dt.year.isin([2025])) & (df_final["data_estoque"].dt.month == 6) ].copy() # Pegar o último dia de junho de cada ano df_junho["ano"] = df_junho["data_estoque"].dt.year ultimos_junho = df_junho.groupby("ano")["data_estoque"].max().reset_index() # Filtrar apenas os registros do último dia de junho de cada ano df_filtrado = df_junho.merge(ultimos_junho, on=["ano", "data_estoque"]) # Salvar resultado caminho_saida = os.path.join(pasta_saida, "ESTOQUE_PDV24_ULTIMO_JUNHO.parquet") df_filtrado.to_parquet(caminho_saida, index=False) print("✅ Arquivo Parquet salvo com sucesso!") print("📅 Últimos estoques de junho por ano incluídos:") for d in ultimos_junho["data_estoque"]: print(f" - {d.strftime('%d/%m/%Y')}")