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