mudaças pré formatação do pc

This commit is contained in:
João Herculano
2025-10-24 15:54:54 -03:00
parent 15fa59651c
commit 7221f41ebb
133 changed files with 5195259 additions and 9891 deletions
+78
View File
@@ -0,0 +1,78 @@
import pandas as pd
import os
# === AJUSTE AQUI CONFORME O NOME REAL DA PASTA ===
pasta_entrada = r"C:\Users\andressa.rocha\OneDrive - GRUPO GINSENG\2025\CONSULTA_ESTOQUE"
pasta_saida = r"C:\Users\andressa.rocha\OneDrive - GRUPO GINSENG\2025\SUPRIMENTOS\ANALISE_ESTOQUE\ESTOQUE_UNIFICADO"
# Cria a pasta de saída se ela não existir
os.makedirs(pasta_saida, exist_ok=True)
# Verifica se a pasta de entrada existe
if not os.path.exists(pasta_entrada):
raise FileNotFoundError(f"A pasta de entrada não foi encontrada: {pasta_entrada}")
# Lista todas as subpastas dentro da pasta de entrada
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)
# Extração da data a partir do nome da pasta (última parte, 8 primeiros dígitos)
try:
parte_final = nome_pasta.split('_')[-1] # ex: '20250627090744'
data_estoque = pd.to_datetime(parte_final[:8], format="%Y%m%d", errors='coerce') # ex: '20250627'
except Exception as e:
print(f"Erro ao extrair data da pasta '{nome_pasta}': {e}")
data_estoque = pd.NaT
print(f"Data extraída da pasta '{nome_pasta}': {data_estoque}")
for arquivo in arquivos:
caminho_arquivo = os.path.join(subpasta, arquivo)
try:
df = pd.read_csv(caminho_arquivo, encoding="utf-8", low_memory=False)
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}")
# Unifica todos os arquivos
if df_list:
df_final = pd.concat(df_list, ignore_index=True)
print("\nColunas disponíveis:", df_final.columns.tolist())
# Confirma se a coluna de data foi criada corretamente
if "data_estoque" not in df_final.columns:
raise ValueError("A coluna 'data_estoque' não foi encontrada nos dados.")
# Garante que está no formato datetime e remove registros sem data
df_final["data_estoque"] = pd.to_datetime(df_final["data_estoque"], errors="coerce")
df_final = df_final.dropna(subset=["data_estoque"])
# Agrupa por ano e mês
df_final["AnoMes"] = df_final["data_estoque"].dt.to_period("M")
# Identifica a 1ª e a última data de cada mês
datas_extremas = df_final.groupby("AnoMes")["data_estoque"].agg(["min", "max"]).reset_index()
datas_extremas = datas_extremas.melt(id_vars="AnoMes", value_name="data_estoque").drop(columns="variable")
# Mantém apenas registros das datas mínima e máxima
df_filtrado = df_final.merge(datas_extremas, on=["AnoMes", "data_estoque"], how="inner")
# Salva o arquivo final em CSV
caminho_saida_csv = os.path.join(pasta_saida, "ESTOQUE_UNIFICADO_FILTRADO.csv")
df_filtrado.to_csv(caminho_saida_csv, index=False, encoding="utf-8")
# Salva o arquivo final em Parquet
caminho_saida_parquet = os.path.join(pasta_saida, "ESTOQUE_UNIFICADO_FILTRADO.parquet")
df_filtrado.to_parquet(caminho_saida_parquet, index=False)
print(f"\n✅ Arquivo unificado e filtrado salvo com sucesso em:\n{caminho_saida_csv}")
print(f"✅ Arquivo também salvo no formato Parquet em:\n{caminho_saida_parquet}")
+44
View File
@@ -0,0 +1,44 @@
import pandas as pd
import os
# Caminho onde estão as subpastas com os arquivos CSV
pasta_entrada = r"C:\Users\andressa.rocha\OneDrive - GRUPO GINSENG\2025\SUPRIMENTOS\ANALISE ESTOQUE\ESTOQUE"
# Caminho da pasta de saída
pasta_saida = r"C:\Users\andressa.rocha\OneDrive - GRUPO GINSENG\2025\SUPRIMENTOS\ANALISE ESTOQUE\ESTOQUE_UNIFICADO"
# Garante que a pasta de saída existe
os.makedirs(pasta_saida, exist_ok=True)
# Lista todas as subpastas dentro de "ESTOQUE"
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 = []
# Percorre todas as subpastas
for subpasta in subpastas:
arquivos = [f for f in os.listdir(subpasta) if f.endswith(".csv")]
nome_pasta = os.path.basename(subpasta) # Obtém o nome da pasta
for arquivo in arquivos:
caminho_arquivo = os.path.join(subpasta, arquivo)
try:
df = pd.read_csv(caminho_arquivo, encoding="utf-8", low_memory=False) # Melhor para grandes volumes de dados
df["Arquivo_Origem"] = arquivo # Adiciona o nome do arquivo de origem
df["Pasta_Origem"] = nome_pasta # Adiciona o nome da pasta de origem
df_list.append(df)
except Exception as e:
print(f"Erro ao ler o arquivo {arquivo}: {e}")
if df_list:
df_final = pd.concat(df_list, ignore_index=True)
# Caminho do arquivo unificado na pasta de saída
caminho_saida = os.path.join(pasta_saida, "ESTOQUE_UNIFICADO.csv")
df_final.to_csv(caminho_saida, index=False, encoding="utf-8")
print(f"Arquivo unificado salvo em: {caminho_saida}")
else:
print("Nenhum arquivo pôde ser processado.")
+70
View File
@@ -0,0 +1,70 @@
import pandas as pd
import os
def extrair_vendas(data_ini: int, data_fim: int, token: str, pasta_destino: str):
"""
Extrai vendas da API com base no período especificado e salva no formato Parquet.
Parâmetros:
data_ini (int): Timestamp inicial (milissegundos desde 1970-01-01).
data_fim (int): Timestamp final (milissegundos desde 1970-01-01).
token (str): Bearer token para autenticação.
pasta_destino (str): Diretório onde o arquivo Parquet será salvo.
"""
url = "https://api.conexaonfe.com.br/v1/relatorios"
headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
payload = {
"ids": [],
"entidade": "NFCE_EMITIDA_RELATORIO",
"tipo": "normal",
"dataIni": data_ini,
"dataFim": data_fim,
"destinatarios": [],
"erpAtualizado": None,
"estabs": [],
"filialClientes": None,
"informacoesNoRelatorio": "AVANCADO_E_ITENS",
"nomArqDownload": "",
"statusEmitida": None,
"tags": [],
"tipoDataConsiderar": "DATA_EMISSAO",
"tipoFiltroMarcador": "CONTEM",
"tipoNota": None,
"valorAte": None,
"valorDe": None
}
try:
response = requests.post(url, headers=headers, json=payload, timeout=30)
if response.status_code == 200:
dados_vendas = response.json()
if not dados_vendas:
print("⚠️ Nenhuma venda encontrada no período.")
return
os.makedirs(pasta_destino, exist_ok=True) # Criar a pasta, se não existir
df = pd.DataFrame(dados_vendas)
arquivo_parquet = os.path.join(pasta_destino, f"vendas_{data_ini}_{data_fim}.parquet")
df.to_parquet(arquivo_parquet, index=False)
print(f"✅ Vendas extraídas e salvas em: {arquivo_parquet}")
else:
print(f"❌ Erro {response.status_code}: {response.text}")
except requests.exceptions.RequestException as e:
print(f"⚠️ Erro de conexão: {e}")
# 🔽 Exemplo de Uso
token = "SEU_BEARER_TOKEN"
data_ini = 1740798000000 # Substituir pelo timestamp correto
data_fim = 1743390000000 # Substituir pelo timestamp correto
pasta_destino = r"C:\Users\andressa.rocha\Documents\HITORICO_VENDAS"
extrair_vendas(data_ini, data_fim, token, pasta_destino)