salvando
This commit is contained in:
@@ -4,6 +4,9 @@ import numpy as np
|
||||
from time import sleep
|
||||
from datetime import datetime
|
||||
import csv
|
||||
from odf.opendocument import OpenDocumentSpreadsheet
|
||||
from odf.table import Table, TableRow, TableCell
|
||||
from odf.text import P
|
||||
|
||||
|
||||
def listar_csvs(diretorio):
|
||||
@@ -68,7 +71,7 @@ def rodar_decendio(decendios,qtd_veranicos, estacoes, file):
|
||||
print("Decendio...")
|
||||
|
||||
|
||||
#estacoes= [2244035]
|
||||
estacoes= [2244035]
|
||||
#decendios = decendios.head(24)
|
||||
resultados = []
|
||||
|
||||
@@ -84,8 +87,6 @@ def rodar_decendio(decendios,qtd_veranicos, estacoes, file):
|
||||
data_inicio = pd.to_datetime(selecao_estacao['INICIO'])
|
||||
data_fim = pd.to_datetime(selecao_estacao['FINAL'])
|
||||
|
||||
|
||||
|
||||
filtro = decendios[(decendios['INICIO'] <= data_fim) & (decendios['FINAL'] >= data_inicio)]
|
||||
|
||||
dia =selecao_estacao['QTDDIAS']
|
||||
@@ -94,13 +95,8 @@ def rodar_decendio(decendios,qtd_veranicos, estacoes, file):
|
||||
filtro['dias_decendio'] = 0
|
||||
filtro['amplitude'] =classificar_aplitude(dia)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
diferenca=diferenca_dias(data_inicio, data_fim)+1
|
||||
|
||||
|
||||
quantidade_veranicos = len(filtro) # Conta o número de linhas
|
||||
print(index,"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -")
|
||||
print ('estacao: ',selecao_estacao , ' Qtd Dias: ', diferenca)
|
||||
@@ -183,6 +179,7 @@ def rodar_decendio(decendios,qtd_veranicos, estacoes, file):
|
||||
dados.append({
|
||||
'CODIGO': selecao_estacao['CODIGO'],
|
||||
'DECENDIO': row['DECENDIO'],
|
||||
'KEY': row['DECENDIO'] + str(pd.to_datetime(row['INICIO']).year),
|
||||
'AMPLITUDE': row['amplitude'],
|
||||
'ANO': pd.to_datetime(row['INICIO']).year,
|
||||
})
|
||||
@@ -200,7 +197,6 @@ def rodar_decendio(decendios,qtd_veranicos, estacoes, file):
|
||||
|
||||
|
||||
|
||||
|
||||
def transformar_decendio():
|
||||
|
||||
origem = '42veranicosclassificacao'
|
||||
@@ -211,17 +207,159 @@ def transformar_decendio():
|
||||
df = pd.read_csv("./42veranicosclassificacao/"+file, sep=";")
|
||||
df_pivot = df.pivot(index="CODIGO", columns="DECENDIO", values="AMPLITUDE")
|
||||
|
||||
|
||||
#df_pivot.reset_index(inplace=True)
|
||||
#df_pivot.to_csv("./43descendiofinal/final"+file, sep=";", encoding="utf-8", index=False)
|
||||
|
||||
|
||||
#Definir o ano hidrológico
|
||||
def calcular_ano_hidrologico(data):
|
||||
ano_atual = data.year
|
||||
if data.month >= 9: # Setembro a Dezembro -> Ano atual/Ano seguinte
|
||||
return f"{ano_atual}/{ano_atual + 1}"
|
||||
else: # Janeiro a Abril -> Ano anterior/Ano atual
|
||||
return f"{ano_atual - 1}/{ano_atual}"
|
||||
import pandas as pd
|
||||
|
||||
|
||||
def gerarmatrizembraco():
|
||||
print("gerar csv 45 ano veranicos..")
|
||||
origem = '42veranicosclassificacao'
|
||||
files = listar_csvs(origem)
|
||||
|
||||
for file in files:
|
||||
print(f"Encontrada pasta: ./{origem}/{file}")
|
||||
estacao = pd.read_csv(f"./{origem}/{file}", delimiter=";", encoding="utf-8")
|
||||
codigos = estacao['CODIGO'].unique()
|
||||
|
||||
for codigo in codigos:
|
||||
print(codigo)
|
||||
ano_hidrologico = pd.read_csv("./decendio.csv", sep=";")
|
||||
# Converter INICIO para datetime
|
||||
ano_hidrologico["INICIO"] = pd.to_datetime(ano_hidrologico["INICIO"], format="%d/%m/%Y")
|
||||
# Criar coluna Decendio2 corretamente
|
||||
ano_hidrologico["KEY"] = ano_hidrologico["DECENDIO"] + ano_hidrologico["INICIO"].dt.strftime("%Y")
|
||||
|
||||
# Aplicar a função corrigida
|
||||
ano_hidrologico["ANO"] = ano_hidrologico["INICIO"].apply(calcular_ano_hidrologico)
|
||||
ano_hidrologico["AMPLITUDE"] = 0
|
||||
ano_hidrologico["ESTACAO"] = codigo
|
||||
# Salvar CSV corrigido
|
||||
file2= f"./47descendiofinal/{codigo}.csv"
|
||||
if os.path.exists(file2): os.remove(file2)
|
||||
ano_hidrologico.to_csv(file2, sep=";", encoding="utf-8", index=False)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def gerarmatrizfinal():
|
||||
print("preencehr com os dados veranicos..")
|
||||
origem= '42veranicosclassificacao'
|
||||
destino = '47descendiofinal'
|
||||
|
||||
files = listar_csvs(origem)
|
||||
|
||||
for file in files:
|
||||
print(f"Encontrada pasta: ./{origem}/{file}")
|
||||
estacao = pd.read_csv(f"./{origem}/{file}", delimiter=";", encoding="utf-8")
|
||||
codigos = estacao['CODIGO'].unique()
|
||||
|
||||
for codigo in codigos:
|
||||
print(codigo)
|
||||
filedestino= f"./{destino}/{codigo}.csv"
|
||||
print(filedestino)
|
||||
|
||||
|
||||
destino_df = pd.read_csv(filedestino, delimiter=";", encoding="utf-8")
|
||||
origem = estacao[estacao['CODIGO'] == codigo]
|
||||
|
||||
|
||||
for index, row in origem.iterrows():
|
||||
key = row['KEY']
|
||||
amplitude = row['AMPLITUDE']
|
||||
|
||||
mask = destino_df['KEY'] == key
|
||||
if mask.any():
|
||||
destino_df.loc[mask, 'AMPLITUDE'] = amplitude
|
||||
|
||||
# Salva o dataset de destino atualizado
|
||||
destino_df.to_csv(filedestino, sep=";", index=False, encoding="utf-8")
|
||||
|
||||
|
||||
|
||||
def exportarcalc():
|
||||
csv_file = "teste.csv"
|
||||
ods_file = "saida.ods"
|
||||
|
||||
df_pivot.reset_index(inplace=True)
|
||||
df_pivot.to_csv("./43descendiofinal/final"+file, sep=";", encoding="utf-8", index=False)
|
||||
# Ler o CSV
|
||||
df = pd.read_csv(csv_file, delimiter=";", encoding="utf-8")
|
||||
|
||||
# Criar documento ODS
|
||||
ods = OpenDocumentSpreadsheet()
|
||||
table = Table(name="Dados")
|
||||
|
||||
# Adicionar linha do ESTACAO
|
||||
estacao = "2022454" # Valor fixo conforme exemplo
|
||||
ano_hidrologico = f"ESTACAO: {estacao}"
|
||||
row_ano = TableRow()
|
||||
cell_ano = TableCell()
|
||||
cell_ano.addElement(P(text=ano_hidrologico))
|
||||
row_ano.addElement(cell_ano)
|
||||
table.addElement(row_ano)
|
||||
|
||||
# Preparar os anos hidrológicos únicos
|
||||
anos = df['ANO'].unique() # Pegar anos únicos
|
||||
|
||||
# Adicionar linha de cabeçalho com os anos
|
||||
row_periodo = TableRow()
|
||||
# Primeira célula vazia para alinhamento
|
||||
cell_vazia = TableCell()
|
||||
cell_vazia.addElement(P(text="DECÊNDIO"))
|
||||
row_periodo.addElement(cell_vazia)
|
||||
|
||||
# Adicionar cada ano como cabeçalho
|
||||
for ano in anos:
|
||||
cell_ano = TableCell()
|
||||
cell_ano.addElement(P(text=str(ano)))
|
||||
row_periodo.addElement(cell_ano)
|
||||
table.addElement(row_periodo)
|
||||
|
||||
# Agrupar dados por decêndio
|
||||
decendios = df['DECENDIO'].unique()
|
||||
|
||||
|
||||
# Adicionar os dados
|
||||
for decendio in decendios:
|
||||
table_row = TableRow()
|
||||
|
||||
# Primeira célula com o nome do decêndio
|
||||
cell_decendio = TableCell()
|
||||
cell_decendio.addElement(P(text=decendio))
|
||||
table_row.addElement(cell_decendio)
|
||||
|
||||
# Adicionar valores para cada ano
|
||||
for ano in anos:
|
||||
# Filtrar o valor para o decêndio e ano específico
|
||||
valor = df[(df['DECENDIO'] == decendio) & (df['ANO'] == ano)]['AMPLIUDE'].iloc[0] if not df[(df['DECENDIO'] == decendio) & (df['ANO'] == ano)].empty else 0
|
||||
cell_valor = TableCell()
|
||||
cell_valor.addElement(P(text=str(valor)))
|
||||
table_row.addElement(cell_valor)
|
||||
|
||||
table.addElement(table_row)
|
||||
|
||||
# Adicionar a tabela ao documento
|
||||
ods.spreadsheet.addElement(table)
|
||||
|
||||
# Salvar o arquivo ODS
|
||||
ods.save(ods_file)
|
||||
|
||||
|
||||
|
||||
|
||||
def carregar_decendios(file):
|
||||
print("Abrindo arquivo decendio.")
|
||||
dados_df = pd.read_csv(file, sep=';', decimal=',', parse_dates=['INICIO', 'FINAL'], dayfirst=True)
|
||||
|
||||
|
||||
start_date = '1980-01-01'
|
||||
end_date = '2022-12-31'
|
||||
filtered_df = dados_df[(dados_df['INICIO'] >= start_date) & (dados_df['FINAL'] <= end_date)]
|
||||
|
||||
Reference in New Issue
Block a user