# -*- coding: utf-8 -*-
"""
Created on Wed Mar 17 13:34:08 2021
@author: Gustavo Eduardo Marcatti
"""
###------------------------------------------------------------------------###
# Utilizando as estruturas básicas do Python
###------------------------------------------------------------------------###
import math
# Função para computar o volume total de um talhão
def func_total(dap, sobr, area_talhao):
alt = math.exp(3.7004 - 7.6165/dap)
vol_arv = 0.0000599458 * dap**1.82083 * alt**0.97645
vol_ha = 1111 * sobr/100 * vol_arv
vol_talhao = vol_ha * area_talhao
print("Volume total:", round(vol_talhao, 2), "m³")
return(vol_talhao)
# Lista de teste
talhao_lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # código do talhão
area_lista = [40, 35, 42, 31, 28, 30, 40, 38, 60, 30] # área do talhão
dap_lista = [19, 25, 26, 23, 25, 27, 25, 26, 24, 18] # dap do talhão
sobr_lista = [90, 89, 93, 94, 92, 97, 99, 91, 85, 94] # sobrevivência no talhão
# aplicar a função sem processo de repetição em loop
vol_talhao1 = func_total(dap_lista[0], sobr_lista[0], area_lista[0]) # talhao 1
vol_talhao2 = func_total(dap_lista[1], sobr_lista[1], area_lista[1]) # talhao 2
vol_talhao3 = func_total(dap_lista[2], sobr_lista[2], area_lista[2]) # talhao 3
# Loop apenas com a impressão na tela
for i in range(len(talhao_lista)):
print(func_total(dap_lista[i], sobr_lista[i], area_lista[i]) )
# Loop para armazenar os resultados de volume em uma lista
lista_vol = []
for i in range(len(talhao_lista)):
lista_vol.append(func_total(dap_lista[i], sobr_lista[i], area_lista[i]) )
lista_vol
sum(lista_vol)
###------------------------------------------------------------------------###
# Utilizando a biblioteca pandas
###------------------------------------------------------------------------###
import pandas as pd
import numpy as np
# Lista de teste
talhao_lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # código do talhão
area_lista = [40, 35, 42, 31, 28, 30, 40, 38, 60, 30] # área do talhão
dap_lista = [19, 25, 26, 23, 25, 27, 25, 26, 24, 18] # dap do talhão
sobr_lista = [90, 89, 93, 94, 92, 97, 99, 91, 85, 94] # sobrevivência no talhão
dados = pd.DataFrame(zip(talhao_lista, area_lista, dap_lista, sobr_lista),
columns=['talhao', 'area', 'dap', 'sobr'])
# Solução vetorizando cada uma das operações
dados['alt'] = np.exp(3.7004 - 7.6165/dados['dap'])
dados['vol_arv'] = 0.0000599458 * dados['dap']**1.82083 * dados['alt']**0.97645
dados['vol_ha'] = 1111 * dados['sobr']/100 * dados['vol_arv']
dados['vol_talhao'] = dados['vol_ha'] * dados['area']
print(dados['vol_talhao'])
print("Volume total: ", dados['vol_talhao'].sum(), "m³")
# Solução utilizando a função apply
dados = pd.DataFrame(zip(talhao_lista, area_lista, dap_lista, sobr_lista),
columns=['talhao', 'area', 'dap', 'sobr'])
import math
# Função para computar o volume total de um talhão
def func_total(dap, sobr, area_talhao):
alt = math.exp(3.7004 - 7.6165/dap)
vol_arv = 0.0000599458 * dap**1.82083 * alt**0.97645
vol_ha = 1111 * sobr/100 * vol_arv
vol_talhao = vol_ha * area_talhao
#print("Volume total:", round(vol_talhao, 2), "m³")
return(vol_talhao)
dados['vol_talhao'] = dados.apply(lambda x: func_total(x.dap, x.sobr, x.area), axis=1)
###------------------------------------------------------------------------###
# Utilizando a biblioteca numpy
###------------------------------------------------------------------------###
import numpy as np
talhao_arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
area_arr = np.array([40, 35, 42, 31, 28, 30, 40, 38, 60, 30])
dap_arr = np.array([19, 25, 26, 23, 25, 27, 25, 26, 24, 18])
sobr_arr = np.array([90, 89, 93, 94, 92, 97, 99, 91, 85, 94])
alt_arr = np.exp(3.7004 - 7.6165/dap_arr)
vol_arv = 0.0000599458 * dap_arr**1.82083 * alt_arr**0.97645
vol_ha = 1111 * sobr_arr/100 * vol_arv
vol_talhao = vol_ha * area_arr
print("Volume total: ", vol_talhao.sum(), "m³")