This commit is contained in:
2024-07-27 21:02:54 -03:00
parent dfea13c6c2
commit f4e61f0cc9
454 changed files with 184249 additions and 6781127 deletions

View File

@@ -10,12 +10,28 @@ def listar_pastas(diretorio):
def completar_com_valores(dados, estacao, output_csv):
dados_df = pd.read_csv(dados, sep=';', decimal=',', parse_dates=['DATA'], dayfirst=True)
start_date = '1980-01-01'
end_date = '2022-12-31'
filtered_df = dados_df[(dados_df['DATA'] >= start_date) & (dados_df['DATA'] <= end_date)]
dados_df=filtered_df
dados_df.head(2)
estacao_df = pd.read_csv(estacao, encoding='utf-8', sep=';', decimal=',')
estacao_df.head(2)
log_info = []
# Variável booleana para verificar se encontrou somente valores <= -1
somente_valores_menores_ou_igual_a_menos_um = False
# Variáveis para armazenar o último código e valor encontrados
ultimo_codigo_achado = None
ultimo_valor_atualizado = None
# Copiar dados_df para uma variável para atualização
AtualizaDados = dados_df.copy()
@@ -29,13 +45,14 @@ def completar_com_valores(dados, estacao, output_csv):
valor = row['VALOR']
data = row['DATA']
if valor <= -1:
log_file.write(f"Código: {row['CODIGO']}, Data: {row['DATA']}, Valor: {valor}\n")
codigo_filtrado = row['CODIGO']
linhas_filtradas = estacao_df.loc[estacao_df['CODIGO'] == codigo_filtrado]
# Iterar sobre os códigos próximos (1codigo, 2codigo, 3codigo)
for i in range(1, 6): # Considerando as três primeiras colunas de códigos
for i in range(1, 8): # Considerando as três primeiras colunas de códigos
codigo_proximo = linhas_filtradas[f'{i}c'].iloc[0]
filtro = (dados_df['CODIGO'] == codigo_proximo) & (dados_df['DATA'] == data)
valor_proximo = dados_df.loc[filtro, 'VALOR'].values
@@ -45,17 +62,34 @@ def completar_com_valores(dados, estacao, output_csv):
# Verificar se o valor encontrado não é menor ou igual a -1
if len(valor_proximo) > 0 and valor_proximo[0] > -1:
AtualizaDados.loc[index, 'VALOR'] = valor_proximo[0]
ultimo_codigo_achado = codigo_proximo
ultimo_valor_atualizado = valor_proximo[0]
log_file.write(f"Valor atual {row['VALOR']} - Valor atualizado para: {valor_proximo[0]}\n")
break # Parar o loop se encontrar um valor válido
else:
log_file.write(f"****Não achou o valor \n")
somente_valores_menores_ou_igual_a_menos_um = True
log_info.append({
'CODIGO': row['CODIGO'],
'DATA': row['DATA'],
'VALOR': valor,
'ULTIMO_CODIGO_ACHADO': ultimo_codigo_achado,
'ULTIMO_VALOR_ATUALIZADO': ultimo_valor_atualizado
})
log_file.write("---------------------------------------------------\n")
# Criar DataFrame com as informações do log e salvar em um CSV
log_df = pd.DataFrame(log_info)
log_df.to_csv(output_csv+'log.csv', sep=";", encoding='utf-8', decimal=',', index=False)
# Exibir mensagem após completar o processo
print("Dados atualizados:")
AtualizaDados.to_csv(output_csv, sep=";", encoding='utf-8', decimal=',', index=False)
#print(AtualizaDados)
return somente_valores_menores_ou_igual_a_menos_um
#df.to_csv(output_csv, sep=";", encoding='utf-8', decimal=',', index=False)
@@ -69,13 +103,23 @@ def processar_arquivos():
print(f"Encontrada pasta: {pasta}")
estacao = f"./proxima_{pasta}.csv"
dados = f"./dados_{pasta}.csv"
output_csv = f"./final_{pasta}.csv"
print(estacao)
print(dados)
print(output_csv)
completar_com_valores(dados, estacao, output_csv)
iteracao = 0
while True:
dados = f"{str(iteracao).zfill(2)}{pasta}_dados.csv"
output_csv=f"{str(iteracao+1).zfill(2)}{pasta}_dados.csv"
print(estacao)
print(dados)
print(output_csv)
resultado = completar_com_valores(dados, estacao, output_csv)
if resultado:
print(f"Valores -1 encontrados na iteração {iteracao}.")
iteracao += 1
else:
print(f"Todos os valores foram atualizados após {iteracao} iterações.")
break
sleep(3)