In [ ]:
# -*- 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)