Files
jean_app/veranicos.py
2025-06-01 16:44:49 -03:00

119 lines
4.4 KiB
Python

import os
import pandas as pd
import numpy as np
from time import sleep
from datetime import datetime
import csv
def listar_pastas(diretorio):
pastas = [nome for nome in os.listdir(diretorio) if os.path.isdir(os.path.join(diretorio, nome))]
return pastas
def processar_veranicos_estacao_chuvosa():
print("processar veranicos ...")
diretorio = 'data' # nome da pasta principal
pastas = listar_pastas(diretorio)
destino= "41veranicoschuvosa"
if not os.path.exists(destino):
os.makedirs(destino)
print(f"Pasta '{destino}' criada.")
for pasta in pastas:
print(f"Encontrada pasta: {pasta}")
estacao_com_inicio_fim_chuva=f"./30estacaochuvosa/{pasta}_estacao_chuvosa.csv"
#dados_veranivos=f"./01processados/{pasta}_dados.csv"
dados_veranivos=f"./20dadosmenosum/{pasta}_processada.csv"
output_csv = f"./{destino}/{pasta}_veranicos.csv"
print("-------------------------------------\n")
print(estacao_com_inicio_fim_chuva)
print(dados_veranivos)
print(output_csv)
veranicos_com_estacao_chuvosa(estacao_com_inicio_fim_chuva,dados_veranivos, output_csv)
def veranicos_com_estacao_chuvosa(estacao_com_inicio_fim_chuva,dados_veranivos, output_csv):
with open(output_csv, 'w') as file:
cabecalho = ['CODIGO', 'INICIO','FINAL', 'QTDDIAS']
writer = csv.DictWriter(file, fieldnames=cabecalho, delimiter=';')
writer.writeheader() # Escreve o cabeçalho
df_dados_estacao_chuvosa = pd.read_csv(estacao_com_inicio_fim_chuva, sep=';', decimal='.')
#df_dados_estacao_chuvosa['CODIGO'] = df_dados_estacao_chuvosa['CODIGO'].astype(int)
try:
df_dados_estacao_chuvosa['INICIO'] = pd.to_datetime(df_dados_estacao_chuvosa['INICIO'], format='%Y-%m-%d', errors='raise')
df_dados_estacao_chuvosa['FINAL'] = pd.to_datetime(df_dados_estacao_chuvosa['FINAL'], format='%Y-%m-%d', errors='raise')
except Exception as e:
raise ValueError(f"Erro ao converter a coluna 'DATA': {e}")
df_dados_veranivos =pd.read_csv(dados_veranivos, sep=';', decimal='.')
#df_dados_veranivos['CODIGO'] = df_dados_veranivos['CODIGO'].astype(int)
try:
df_dados_veranivos['DATA'] = pd.to_datetime(df_dados_veranivos['DATA'], format='%Y-%m-%d', errors='raise')
except Exception as e:
raise ValueError(f"Erro ao converter a coluna 'DATA': {e}")
total = len(df_dados_estacao_chuvosa)
for index, row in df_dados_estacao_chuvosa.iterrows():
estacao= row['CODIGO']
start_date= row['INICIO']
end_date= row['FINAL']
print(f"\rProcessando linha {index+1}/{total} - {estacao}", end='')
#print(estacao , "INICIO: ", start_date, "FINAL: ", end_date)
df_dados = df_dados_veranivos[(df_dados_veranivos['CODIGO'] == estacao) &(df_dados_veranivos['DATA'] >= start_date) & (df_dados_veranivos['DATA'] <= end_date)]
marcador_inicio= False
marcador_final= False
marcador_primeirodia= False
leitura_chuva=0
cont_veranico=0
data_anterior=''
data_incio=''
for index, row in df_dados.iterrows():
leitura_chuva = float(row['VALOR'].replace(',', '.'))
data= row['DATA']
if (marcador_inicio): #FALSO
if leitura_chuva <=0:
cont_veranico= cont_veranico+1
else:
marcador_final= True
if (cont_veranico==1 and marcador_inicio):
data_incio= data
if marcador_final:
if (cont_veranico>=4):
#print ('estacao:', nome_estacao,'INCIO:', data_incio, ' FIM:', data_anterior , ' DIAS:', cont_veranico)
with open(output_csv, 'a') as file:
writer = csv.DictWriter(file, fieldnames=cabecalho, delimiter=';')
writer.writerow({'CODIGO':estacao, 'INICIO':data_incio.strftime('%Y-%m-%d'),'FINAL':data_anterior.strftime('%Y-%m-%d'), 'QTDDIAS':cont_veranico})
#toda ver que chove mais que 0.5 mm ele reinicia o contador
if leitura_chuva >0:
marcador_inicio= True
cont_veranico= 0
marcador_final= False
data_anterior= data