atualizando
This commit is contained in:
@@ -26,17 +26,38 @@ def processar_Classificao_Veranicos():
|
||||
|
||||
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
def diferenca_dias(data1, data2):
|
||||
formato = "%Y-%m-%d"
|
||||
|
||||
# Converter para string se for Timestamp
|
||||
if not isinstance(data1, str):
|
||||
data1 = data1.strftime(formato)
|
||||
if not isinstance(data2, str):
|
||||
data2 = data2.strftime(formato)
|
||||
|
||||
# Verificar se as datas são válidas
|
||||
if not data1 or not data2:
|
||||
print(f"Erro: Data inválida -> data1: {data1}, data2: {data2}")
|
||||
return None
|
||||
|
||||
try:
|
||||
d1 = datetime.strptime(data1, formato)
|
||||
d2 = datetime.strptime(data2, formato)
|
||||
return (d2 - d1).days
|
||||
except ValueError as e:
|
||||
print(f"Erro ao converter datas: {data1}, {data2} - {e}")
|
||||
return None
|
||||
|
||||
|
||||
def rodar_decendio(decendios,qtd_veranicos, estacoes):
|
||||
print("Decendio...")
|
||||
resultados = []
|
||||
amplitude=0
|
||||
|
||||
|
||||
|
||||
estacoes= [2244035]
|
||||
#decendios = decendios.head(24)
|
||||
|
||||
resultados = []
|
||||
|
||||
for estacao in estacoes: # percorre todas as estações array de estacoes
|
||||
|
||||
@@ -44,9 +65,8 @@ def rodar_decendio(decendios,qtd_veranicos, estacoes):
|
||||
#estacao_fitrada = qtd_veranicos['CODIGO'] == estacao
|
||||
estacao_fitrada = qtd_veranicos[qtd_veranicos['CODIGO'] == estacao]
|
||||
estacao_fitrada = estacao_fitrada.head(10)
|
||||
|
||||
|
||||
for index, selecao_estacao in estacao_fitrada.iterrows(): # Itera pelas linhas do DataFrame
|
||||
print(index," ------------------------------------------")
|
||||
|
||||
data_inicio = pd.to_datetime(selecao_estacao['INICIO'])
|
||||
data_fim = pd.to_datetime(selecao_estacao['FINAL'])
|
||||
@@ -58,32 +78,86 @@ def rodar_decendio(decendios,qtd_veranicos, estacoes):
|
||||
dia =selecao_estacao['QTDDIAS']
|
||||
# Adicionar colunas FINICIO e FFINAL
|
||||
filtro = filtro.copy() # Para evitar avisos do Pandas
|
||||
filtro['FINICIO'] = data_inicio
|
||||
filtro['FFINAL'] = data_fim
|
||||
|
||||
for index, selecao_filtro in filtro.iterrows():
|
||||
des = selecao_filtro['DECENDIO']
|
||||
#filtro['FINICIO'] = data_inicio
|
||||
#filtro['FFINAL'] = data_fim
|
||||
# filtro['dias'] = filtro.apply(lambda row: diferenca_dias(row['INICIO'], row['FINAL']), axis=1)
|
||||
filtro['dias_chuva'] = 0
|
||||
#filtro.apply(lambda row: diferenca_dias(row['FINICIO'], row['FINAL']), axis=1)
|
||||
|
||||
|
||||
|
||||
diferenca=diferenca_dias(data_inicio, data_fim)
|
||||
|
||||
|
||||
quantidade_veranicos = len(filtro) # Conta o número de linhas
|
||||
print(index,"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -")
|
||||
print ('estacao: ',selecao_estacao , 'data_inicio' , '--- ', data_fim ,' Qtd Dias: ', diferenca)
|
||||
if quantidade_veranicos <=0:
|
||||
print(f"Tem algum problema registros ({quantidade_veranicos} linhas).")
|
||||
elif quantidade_veranicos <= 1:
|
||||
print(f"Tem mais de 1 registros ({quantidade_veranicos} linhas).")
|
||||
filtro.loc[filtro.index[0], 'dias_chuva'] = diferenca_dias(data_inicio, data_fim)+1
|
||||
|
||||
|
||||
print(filtro)
|
||||
elif quantidade_veranicos <= 2:
|
||||
print(f"Tem mais de 2 registros ({quantidade_veranicos} linhas).")
|
||||
filtro.loc[filtro.index[0], 'dias_chuva'] = diferenca_dias(data_inicio, filtro.iloc[0]['FINAL'])+1
|
||||
filtro.loc[filtro.index[1], 'dias_chuva'] = diferenca_dias(filtro.iloc[1]['INICIO'], data_fim)+1
|
||||
|
||||
print(filtro)
|
||||
|
||||
elif quantidade_veranicos <= 3:
|
||||
print(f"Tem mais de 3 registros ({quantidade_veranicos} linhas).")
|
||||
filtro.loc[filtro.index[0], 'dias_chuva'] = diferenca_dias(data_inicio, filtro.iloc[0]['FINAL'])+1
|
||||
filtro.loc[filtro.index[1], 'dias_chuva'] = diferenca_dias(filtro.iloc[1]['INICIO'], filtro.iloc[1]['FINAL']) +1
|
||||
filtro.loc[filtro.index[2], 'dias_chuva'] = diferenca_dias(filtro.iloc[2]['INICIO'], data_fim)+1
|
||||
print(filtro)
|
||||
print(des)
|
||||
|
||||
elif quantidade_veranicos <= 4:
|
||||
print(f"Tem mais de 4 registros ({quantidade_veranicos} linhas).")
|
||||
filtro.loc[filtro.index[0], 'dias_chuva'] = diferenca_dias(data_inicio, filtro.iloc[0]['FINAL'])
|
||||
filtro.loc[filtro.index[1], 'dias_chuva'] = diferenca_dias(filtro.iloc[1]['INICIO'], filtro.iloc[1]['FINAL'])
|
||||
filtro.loc[filtro.index[2], 'dias_chuva'] = diferenca_dias(filtro.iloc[2]['INICIO'], filtro.iloc[2]['FINAL'])
|
||||
filtro.loc[filtro.index[3], 'dias_chuva'] = diferenca_dias(filtro.iloc[3]['INICIO'], data_fim)+1
|
||||
print(filtro)
|
||||
dados = []
|
||||
print('->', selecao_estacao)
|
||||
for index, row in filtro.iterrows():
|
||||
dados.append({
|
||||
'CODIGO': selecao_estacao['CODIGO'],
|
||||
'DECENDIO': row['DECENDIO'],
|
||||
'AMPLITUDE': row['dias_chuva']
|
||||
})
|
||||
print('************************************************************')
|
||||
|
||||
resultado = {
|
||||
'estacao': estacao,
|
||||
'descendio':selecao_filtro['DECENDIO'],
|
||||
resultados.append(pd.DataFrame(dados))
|
||||
|
||||
|
||||
|
||||
'amplitude': 0
|
||||
|
||||
}
|
||||
resultados.append(resultado)
|
||||
|
||||
|
||||
|
||||
save = pd.DataFrame(resultados)
|
||||
os.remove('saida.csv')
|
||||
save.to_csv('saida.csv', sep=';', encoding='utf-8', index=False)
|
||||
|
||||
|
||||
|
||||
if os.path.exists('saida.csv'): os.remove('saida.csv')
|
||||
pd.concat(resultados, ignore_index=True).to_csv('saida.csv', sep=';', encoding='utf-8', index=False)
|
||||
|
||||
|
||||
|
||||
|
||||
def transformar_decendio():
|
||||
df = pd.read_csv("saida.csv", sep=";")
|
||||
# Transformar a tabela para o formato desejado
|
||||
df_pivot = df.pivot(index="CODIGO", columns="DECENDIO", values="AMPLITUDE")
|
||||
|
||||
# Resetar o índice para salvar corretamente
|
||||
df_pivot.reset_index(inplace=True)
|
||||
|
||||
# Salvar o resultado no CSV
|
||||
df_pivot.to_csv("saida_transformado.csv", sep=";", encoding="utf-8", index=False)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def carregar_decendios(file):
|
||||
|
||||
Reference in New Issue
Block a user