{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Carregando\n", "#começa tratando os dados e limpa a base\n", "import pandas as pd\n", "import numpy as np\n", "import csv\n", "\n", "dados = pd.read_csv('dados.csv', sep=';', encoding='utf-8', decimal=',')\n", "#dados.head(5)\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#dados.dtypes\n", "# selecao do periodo de analise \n", "\n", "dados['DATA'] = pd.to_datetime(dados['DATA'], format='%d/%m/%Y')\n", "\n", "df_merged =pd.DataFrame()\n", "\n", "\n", "ano = list([2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020])\n", "\n", "\n", "for x in ano:\n", " selecao = (dados['DATA'] >=str(x)+'/09/01') & (dados['DATA'] <= str(x+1)+'/04/30')\n", " \n", " df_filtrado = dados[selecao]\n", "\n", "\n", " df_merged = pd.concat([df_merged, df_filtrado], ignore_index=True) \n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from datetime import datetime\n", "#inicio da estacao chuvosa \n", "\n", "nome_estacao='DIAMANTINA'\n", " \n", "inciochuva = df_merged.loc[:,['DATA', nome_estacao] ]\n", "final_chuva=[]\n", "\n", "marcador_inicio=False\n", "ano_do_incio_chuva=0\n", "marcador_final=False\n", "\n", "somador_ml=0\n", "somador_ml_final_chuva=0\n", "\n", "for index, row in inciochuva.iterrows():\n", " leitura_chuva= row[nome_estacao] \n", " \n", " if leitura_chuva>=0:\n", " somador_ml= somador_ml+leitura_chuva;\n", "\n", " if somador_ml>=10 and not marcador_inicio:\n", " marcador_inicio=True\n", " data_incio_chuva= row['DATA'] \n", " ano_atual= row['DATA'].year\n", " print ('estacao:', nome_estacao,'INCIO:', data_incio_chuva, 'MM', somador_ml)\n", " somador_ml=0\n", " ano_do_incio_chuva= ano_atual\n", " marcador_final=False\n", " #print ('estacao:',ano_do_incio_chuva)\n", "\n", "final_chuva = inciochuva[::-1] \n", "print ('ano incio chuva:',ano_do_incio_chuva)\n", "for index, row in final_chuva.iterrows(): \n", " leitura_chuva= row[nome_estacao] \n", " ano_atual= int(row['DATA'].year)\n", " data_atual= row['DATA'] \n", " \n", " if leitura_chuva>=0 and data_atual <= datetime.strptime(str(ano_do_incio_chuva+1)+'-04-30', '%Y-%m-%d') :\n", " somador_ml_final_chuva = somador_ml_final_chuva +leitura_chuva\n", "\n", " if somador_ml_final_chuva>=5 and not marcador_final: \n", " marcador_final=True \n", " data_final_chuva= row['DATA'] \n", " print ('estacao:', nome_estacao,'FINAL:', data_final_chuva, 'MM', somador_ml_final_chuva)\n", " somador_ml_final_chuva=0\n", " marcador_inicio=False\n", " print ('ano final chuva:', ano_do_incio_chuva+1)\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import csv\n", "from datetime import datetime\n", "\n", "with open('iniciofimestacao.csv', 'w') as file:\n", " cabecalho = ['estacao', 'inicio','final']\n", " writer = csv.DictWriter(file, fieldnames=cabecalho,delimiter=';')\n", " writer.writeheader() # Escreve o cabeçalho\n", "\n", "\n", "#inicio da estacao chuvosa \n", "ano = list([2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020])\n", "\n", "#extrair nome coulas e remove a data\n", "estacao= list(dados.columns)\n", "estacao.pop(0)\n", "\n", "\n", "\n", "for xrow in estacao: #percorre a lista das estacoes\n", "\n", " for x in ano: # de cada estacao percorre o ano\n", "\n", " selecao = (dados['DATA'] >=str(x)+'/09/01') & (dados['DATA'] <= str(x+1)+'/04/30') \n", " df_filtrado_ano = dados[selecao] \n", "\n", " nome_estacao=xrow\n", " inciochuva = df_filtrado_ano.loc[:,['DATA', nome_estacao] ]\n", " final_chuva=[]\n", "\n", " marcador_inicio=False\n", " ano_do_incio_chuva=0\n", " marcador_final=False\n", "\n", " somador_ml=0\n", " somador_ml_final_chuva=0\n", "\n", " for index, row in inciochuva.iterrows():\n", " leitura_chuva= row[nome_estacao] \n", " \n", " if leitura_chuva>=0:\n", " somador_ml= somador_ml+leitura_chuva;\n", "\n", " if somador_ml>=10 and not marcador_inicio:\n", " marcador_inicio=True\n", " data_incio_chuva= row['DATA'] \n", " ano_atual= row['DATA'].year\n", " #print ('estacao:', nome_estacao,'INCIO:', data_incio_chuva, 'MM', somador_ml)\n", " dtinicio=data_incio_chuva\n", " somador_ml=0\n", " ano_do_incio_chuva= ano_atual\n", " marcador_final=False\n", " #print ('estacao:',ano_do_incio_chuva)\n", "\n", " \n", " final_chuva = inciochuva[::-1] \n", " \n", " for index, row in final_chuva.iterrows(): \n", " leitura_chuva= row[nome_estacao] \n", " ano_atual= int(row['DATA'].year)\n", " data_atual= row['DATA'] \n", " \n", " if leitura_chuva>=0 and data_atual <= datetime.strptime(str(ano_do_incio_chuva+1)+'-04-30', '%Y-%m-%d') :\n", " somador_ml_final_chuva = somador_ml_final_chuva +leitura_chuva\n", "\n", " if somador_ml_final_chuva>=5 and not marcador_final: \n", " marcador_final=True \n", " data_final_chuva= row['DATA'] \n", " #print ('estacao:', nome_estacao,'FINAL:', data_final_chuva, 'MM', somador_ml_final_chuva)\n", " dtfinal = data_final_chuva\n", " somador_ml_final_chuva=0\n", " marcador_inicio=False\n", " #print ('ano final chuva:', ano_do_incio_chuva+1)\n", " \n", " #print ('estacao:', nome_estacao,'INCIO:', data_incio_chuva,'FINAL:', data_final_chuva )\n", " with open('iniciofimestacao.csv', 'a') as file:\n", " writer = csv.DictWriter(file, fieldnames=cabecalho, delimiter=';') \n", " writer.writerow({'estacao':nome_estacao, 'inicio':data_incio_chuva,'final':data_final_chuva}) \n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#extrair nome coulas e remove a data\n", "estacao= list(dados.columns)\n", "estacao.pop(0)\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "with open('final.csv', 'w') as file:\n", " cabecalho = ['estacao', 'inicio','final', 'qtdias']\n", " writer = csv.DictWriter(file, fieldnames=cabecalho, delimiter=';')\n", " writer.writeheader() # Escreve o cabeçalho\n", "\n", "marcador_inicio= False\n", "marcador_final= False\n", "marcador_primeirodia= False\n", "leitura_chuva=0\n", "cont_veranico=0\n", "data_anterior=''\n", "data_incio=''\n", "\n", "\n", "for xrow in estacao: #percorre a lista das estacoes\n", "\n", " nome_estacao=xrow\n", " \n", " novo = dados.loc[:,['DATA', nome_estacao] ]\n", " novo[nome_estacao] = novo[nome_estacao].astype(float)\n", "\n", " for index, row in novo.iterrows():\n", " leitura_chuva= row[nome_estacao] \n", " data= row['DATA']\n", " if (marcador_inicio):\n", " if leitura_chuva <=0:\n", " cont_veranico= cont_veranico+1\n", " else:\n", " marcador_final= True\n", " \n", " if (cont_veranico==1 and marcador_inicio):\n", " data_incio= data \n", " if marcador_final:\n", " if (cont_veranico>=4):\n", " \n", " #print ('estacao:', nome_estacao,'INCIO:', data_incio, ' FIM:', data_anterior , ' DIAS:', cont_veranico) \n", " with open('final.csv', 'a') as file:\n", " writer = csv.DictWriter(file, fieldnames=cabecalho, delimiter=';') \n", " writer.writerow({'estacao':nome_estacao, 'inicio':data_incio,'final':data_anterior, 'qtdias':cont_veranico}) \n", "\n", "\n", "\n", "\n", " #toda ver que chove mais que 0.5 mm ele reinicia o contador\n", " if leitura_chuva >0: \n", " marcador_inicio= True\n", " cont_veranico= 0\n", " marcador_final= False\n", "\n", " data_anterior= data\n", " \n" ] } ], "metadata": { "kernelspec": { "display_name": "venv", "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" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }