{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "3baa2ead-4ec5-46a4-a098-faffc5f77d3e",
"metadata": {},
"outputs": [],
"source": [
"#bibliotecas\n",
"#!pip install pandas numpy\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"import os"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a7d16f5b-6486-4f88-bc7a-8586483ba363",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" CODIGO | \n",
" DATA | \n",
" VALOR | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1742017 | \n",
" 1980-01-01 | \n",
" 1.6 | \n",
"
\n",
" \n",
" | 1 | \n",
" 1742017 | \n",
" 1980-01-02 | \n",
" 10.6 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" CODIGO DATA VALOR\n",
"0 1742017 1980-01-01 1.6\n",
"1 1742017 1980-01-02 10.6"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Carregar o DataFrame e pega a estacao mais proxima\n",
"\n",
"dados_df = pd.read_csv(\"leitura.csv\", sep=';', decimal=',', parse_dates=['DATA'], dayfirst=True)\n",
"dados_df.head(2)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "8e7c01f0-b13c-4552-96f6-0906abd07280",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" CODIGO | \n",
" LATITUDE | \n",
" LONGITUDE | \n",
" NOME | \n",
" 1proxima | \n",
" 2proxima | \n",
" 3proxima | \n",
" 1codigo | \n",
" 2codigo | \n",
" 3codigo | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1742017 | \n",
" -17.845600 | \n",
" -42.075600 | \n",
" MALACACHETA | \n",
" ÁGUA BOA | \n",
" SANTA MARIA DO SUAÇUÍ | \n",
" SÃO JOÃO EVANGELISTA | \n",
" 1742019 | \n",
" 1842008 | \n",
" 1842020 | \n",
"
\n",
" \n",
" | 1 | \n",
" 1742019 | \n",
" -17.992201 | \n",
" -42.393902 | \n",
" ÁGUA BOA | \n",
" SANTA MARIA DO SUAÇUÍ | \n",
" MALACACHETA | \n",
" SÃO JOÃO EVANGELISTA | \n",
" 1842008 | \n",
" 1742017 | \n",
" 1842020 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" CODIGO LATITUDE LONGITUDE NOME 1proxima \\\n",
"0 1742017 -17.845600 -42.075600 MALACACHETA ÁGUA BOA \n",
"1 1742019 -17.992201 -42.393902 ÁGUA BOA SANTA MARIA DO SUAÇUÍ \n",
"\n",
" 2proxima 3proxima 1codigo 2codigo 3codigo \n",
"0 SANTA MARIA DO SUAÇUÍ SÃO JOÃO EVANGELISTA 1742019 1842008 1842020 \n",
"1 MALACACHETA SÃO JOÃO EVANGELISTA 1842008 1742017 1842020 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"\n",
"# Converter mapeamento para DataFrame\n",
"estacao_df = pd.read_csv(\"estacao_mais_proxima.csv\", encoding='utf-8', sep=';', decimal=',')\n",
"estacao_df.head(2)\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "fb6a0bc3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dados atualizados:\n"
]
}
],
"source": [
"# Copiar dados_df para uma variável para atualização\n",
"AtualizaDados = dados_df.copy()\n",
"\n",
"# Caminho do arquivo de log no diretório atual\n",
"log_file_path = os.path.join(os.getcwd(), 'atualizacao_dados.txt')\n",
"\n",
"# Abrir o arquivo de log para escrita\n",
"with open(log_file_path, 'w') as log_file:\n",
" # Iterar sobre AtualizaDados para atualizar os valores\n",
" for index, row in AtualizaDados.iterrows():\n",
" valor = row['VALOR']\n",
" data = row['DATA']\n",
" if valor <= -1:\n",
" log_file.write(f\"Código: {row['CODIGO']}, Data: {row['DATA']}, Valor: {valor}\\n\")\n",
"\n",
" codigo_filtrado = row['CODIGO']\n",
" linhas_filtradas = estacao_df.loc[estacao_df['CODIGO'] == codigo_filtrado]\n",
" \n",
" # Iterar sobre os códigos próximos (1codigo, 2codigo, 3codigo)\n",
" for i in range(1, 4): # Considerando as três primeiras colunas de códigos\n",
" codigo_proximo = linhas_filtradas[f'{i}codigo'].iloc[0]\n",
" filtro = (dados_df['CODIGO'] == codigo_proximo) & (dados_df['DATA'] == data)\n",
" valor_proximo = dados_df.loc[filtro, 'VALOR'].values\n",
" \n",
" log_file.write(f\"{i}codigo: {codigo_proximo} Valor: {valor_proximo}\\n\")\n",
" \n",
" # Verificar se o valor encontrado não é menor ou igual a -1\n",
" if len(valor_proximo) > 0 and valor_proximo[0] > -1:\n",
" AtualizaDados.loc[index, 'VALOR'] = valor_proximo[0]\n",
"\n",
" log_file.write(f\"Valor atual {row['VALOR']} - Valor atualizado para: {valor_proximo[0]}\\n\")\n",
" break # Parar o loop se encontrar um valor válido\n",
" \n",
" log_file.write(\"---------------------------------------------------\\n\")\n",
"\n",
"# Exibir mensagem após completar o processo\n",
"print(\"Dados atualizados:\")\n",
"AtualizaDados.to_csv(\"dados_atualizados_mais_proximo.csv\", sep=\";\", encoding='utf-8', decimal=',', index=False)\n",
"#print(AtualizaDados)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}