# -*- coding: utf-8 -*-
"""
Created on Wed Apr 7 14:44:33 2021
@author: Gustavo Eduardo Marcatti
"""
# importar as bibliotecas necessárias
import pandas as pd
import numpy as np
from scipy.optimize import curve_fit
# importar os dados do excel
arq = r'C:\aula_prog\dados\dados_estr.xlsx'
dados = pd.read_excel(arq, engine='openpyxl')
# função de ajuste de modelo
def ajuste_mod(df):
# modelo para ajuste
def mod(x, b0, b1):
return np.exp(b0 - b1 / x)
# ajuste propriamente dito
popt, pcov = curve_fit(mod, df['idade'], df['vol'])
return pd.DataFrame({'b0': [popt[0]], 'b1': [popt[1]]})
# ajuste_mod(dados) # teste da função para o ajuste geral
# 1o: subdivide os dados em grupos de interesse
# 2o: apply a função ajuste_mod repetidamente para cada grupo
df_coef = dados.groupby('talhao').apply(ajuste_mod)
# 1o: transforma talhao de índice da tabela para coluna
# 2o: elimina a coluna level_1 (herdada do ajuste para cada grupo)
df_coef = df_coef.reset_index().drop('level_1', axis = 1)
# junção de tabela de dados com tabela de coeficientes
dados_coef = pd.merge(dados, df_coef, on = 'talhao')
# exportar tabela (dados + coeficientes) para arquivo excel
arq_w = r'C:\aula_prog\dados\dados_estr_coef_func.xlsx'
dados_coef.to_excel(arq_w, index = False)