sabado
This commit is contained in:
128
iniciochuvosa.py
Normal file
128
iniciochuvosa.py
Normal file
@@ -0,0 +1,128 @@
|
||||
import os
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
from time import sleep
|
||||
import csv
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
def listar_pastas(diretorio):
|
||||
pastas = [nome for nome in os.listdir(diretorio) if os.path.isdir(os.path.join(diretorio, nome))]
|
||||
return pastas
|
||||
|
||||
|
||||
def filtro_setembro_abril_estacao(dados, output_csv):
|
||||
# Lista dos anos para os quais queremos selecionar os dados
|
||||
anos = list(range(1980, 2023)) # De 1980 a 2022
|
||||
|
||||
# Ler os dados do CSV
|
||||
dados_df = pd.read_csv(dados, sep=';', decimal=',', parse_dates=['DATA'], dayfirst=True)
|
||||
|
||||
# DataFrame para armazenar os dados selecionados
|
||||
dados_selecionados = pd.DataFrame()
|
||||
|
||||
for ano in anos:
|
||||
# Selecionar os dados de 1 de setembro de 'ano' a 30 de abril do próximo ano ('ano' + 1)
|
||||
inicio = f'{ano}-09-01'
|
||||
fim = f'{ano+1}-04-30'
|
||||
|
||||
selecao = (dados_df['DATA'] >= inicio) & (dados_df['DATA'] <= fim)
|
||||
dados_selecionados = pd.concat([dados_selecionados, dados_df[selecao]])
|
||||
|
||||
# Salvar os dados selecionados em um novo arquivo CSV
|
||||
dados_selecionados.to_csv(output_csv, sep=';', encoding='utf-8', index=False, decimal=',')
|
||||
|
||||
|
||||
|
||||
|
||||
def estacaochuvosa(dados, output_csv):
|
||||
print(dados)
|
||||
|
||||
with open('iniciofimestacao.csv', 'w') as file:
|
||||
cabecalho = ['estacao', 'inicio','final']
|
||||
writer = csv.DictWriter(file, fieldnames=cabecalho,delimiter=';')
|
||||
writer.writeheader() # Escreve o cabeçalho
|
||||
|
||||
# Ler os dados do CSV
|
||||
dados_df = pd.read_csv(dados, sep=';', decimal=',')
|
||||
|
||||
# Garantir que a coluna 'DATA' é do tipo datetime com o formato correto
|
||||
try:
|
||||
dados_df['DATA'] = pd.to_datetime(dados_df['DATA'], format='%Y-%m-%d', errors='raise')
|
||||
except Exception as e:
|
||||
raise ValueError(f"Erro ao converter a coluna 'DATA': {e}")
|
||||
|
||||
estacao = dados_df['CODIGO'].unique()
|
||||
|
||||
anos = list(range(1980, 2023)) # De 1980 a 2022
|
||||
print(estacao)
|
||||
|
||||
|
||||
for xrow in estacao: #percorre a lista das estacoes
|
||||
|
||||
nome_estacao=xrow
|
||||
|
||||
for ano in anos:
|
||||
|
||||
data_inicio = datetime.strptime(f'{ano}-09-01', '%Y-%m-%d')
|
||||
data_fim = datetime.strptime(f'{ano+1}-04-30', '%Y-%m-%d')
|
||||
df_inciochuva = dados_df[(dados_df['CODIGO'] == nome_estacao) &(dados_df['DATA'] >= data_inicio) & (dados_df['DATA'] <= data_fim)]
|
||||
marcador_inicio=False
|
||||
marcador_final=False
|
||||
|
||||
somador_ml=0
|
||||
somador_ml_final_chuva=0
|
||||
for index, row in df_inciochuva.iterrows():
|
||||
leitura_chuva= row['VALOR']
|
||||
|
||||
if leitura_chuva>=0:
|
||||
somador_ml= somador_ml+leitura_chuva;
|
||||
|
||||
if somador_ml>=10 and not marcador_inicio:
|
||||
marcador_inicio=True
|
||||
data_incio_chuva= row['DATA']
|
||||
ano_atual= row['DATA'].year
|
||||
#print ('estacao:', nome_estacao,'INCIO:', data_incio_chuva, 'MM', somador_ml)
|
||||
somador_ml=0
|
||||
marcador_final=False
|
||||
#print ('estacao:',ano_do_incio_chuva)
|
||||
|
||||
df_final_chuva = df_inciochuva[::-1]
|
||||
|
||||
for index, row in df_final_chuva.iterrows():
|
||||
leitura_chuva= row['VALOR']
|
||||
|
||||
if leitura_chuva>=0:
|
||||
somador_ml_final_chuva= somador_ml_final_chuva+leitura_chuva;
|
||||
|
||||
if somador_ml_final_chuva>=5 and not marcador_final:
|
||||
marcador_final=True
|
||||
data_final_chuva=row['DATA']
|
||||
somador_ml_final_chuva=0
|
||||
marcador_inicio=False
|
||||
#print ('ano final chuva:', ano_do_incio_chuva+1)
|
||||
# print ('estacao:', nome_estacao,'INCIO:', data_incio_chuva,'FINAL:', data_final_chuva )
|
||||
with open('iniciofimestacao.csv', 'a') as file:
|
||||
writer = csv.DictWriter(file, fieldnames=cabecalho, delimiter=';')
|
||||
writer.writerow({'estacao':nome_estacao, 'inicio':data_incio_chuva,'final':data_final_chuva})
|
||||
|
||||
|
||||
def processar_inicio_fim_estacao_chuvosa():
|
||||
print("Estacao chuvosa...")
|
||||
diretorio = 'data' # nome da pasta principal
|
||||
pastas = listar_pastas(diretorio)
|
||||
|
||||
for pasta in pastas:
|
||||
print(f"Encontrada pasta: {pasta}")
|
||||
|
||||
dados = f"./{pasta}_dados.csv"
|
||||
estacao =f"./{pasta}"
|
||||
output_csv=f"./{pasta}_filtro_setembro_abril.csv"
|
||||
estacao_chuvosa=f"./{pasta}_estacao_chuvosa.csv"
|
||||
|
||||
filtro_setembro_abril_estacao(dados, output_csv)
|
||||
sleep(3)
|
||||
estacaochuvosa(output_csv, estacao_chuvosa)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user