# -*- coding: utf-8 -*-
"""
Created on Wed Apr 7 13:54:47 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')
# modelo para ajuste
def mod(x, b0, b1):
return np.exp(b0 - b1 / x)
# subdividir os dados em grupos de interesse
grupos = dados.groupby('talhao')
# lista vazia que vai receber os coeficientes
coef = []
# loop for para iterar em cada grupo
# k: código do grupo, g: são os dados do grupo
for k, g in grupos:
# ajuste do modelo não linear
popt, pcov = curve_fit(mod, g['idade'], g['vol'])
# adicionar os coeficientes do grupo k na lista coef
coef.append([k, popt[0], popt[1]])
# converter lista de listas em data frame pandas
df_coef = pd.DataFrame(coef, columns=['talhao', 'b0', 'b1'])
# 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.xlsx'
dados_coef.to_excel(arq_w, index = False)