Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -12,6 +12,7 @@ from reportlab.lib.styles import getSampleStyleSheet
|
|
| 12 |
import shutil
|
| 13 |
import os
|
| 14 |
import plotly.express as px
|
|
|
|
| 15 |
|
| 16 |
#-----------------#
|
| 17 |
|
|
@@ -104,13 +105,39 @@ def scatter_plot_with_percent_labels(data):
|
|
| 104 |
# Função de avaliação do imóvel
|
| 105 |
def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo de imovel',
|
| 106 |
caract_avaliando='Defina o item 1 de Fundamentação', ident_dados='Defina o item 3 de Fundamentação'):
|
|
|
|
|
|
|
|
|
|
| 107 |
# Lendo a aba 'avaliando' da planilha
|
| 108 |
df_avaliando = pd.read_excel(planilha.name, 'avaliando')
|
| 109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
# Lendo a aba 'dados' da planilha, limitando o número de linhas
|
| 111 |
df_dados = pd.read_excel(planilha.name, 'dados').iloc[:int(num_linhas_desejadas)]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
|
| 113 |
#-----------------#
|
|
|
|
| 114 |
|
| 115 |
# fator de atratividade local (fal)
|
| 116 |
df_transp = df_dados.copy()
|
|
@@ -472,7 +499,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
|
|
| 472 |
else:
|
| 473 |
result['Vunit'] = round((result['Valor_desc']/result['Área Terreno']), 2)
|
| 474 |
|
| 475 |
-
result = result[['lat','lon','Atratividade local', 'Área Construída', 'Área Terreno', 'Testada', 'Topografia',
|
| 476 |
'Relevo','Superfície','Aproveitamento','Acessibilidade', 'Idade aparente e conservação', 'Padrão construtivo', 'Vagas',
|
| 477 |
'Coeficiente extra', 'Valor', 'fof','Valor_desc', 'Vunit','fal', 'fac', 'fat','fpe', 'ftp','frv','fsp',
|
| 478 |
'fap','fav', 'fic','fpd', 'fvg', 'fex']]
|
|
@@ -541,7 +568,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
|
|
| 541 |
}
|
| 542 |
vc = dict_vc[num]
|
| 543 |
vc
|
| 544 |
-
result['z-score'] = abs((result['Vunit_hom'] - media) / desvio_padrao)
|
| 545 |
result['Status'] = np.where(result['z-score'] > vc, 'rejeitado', 'aceito')
|
| 546 |
|
| 547 |
# cópia para dataframe na interface
|
|
@@ -585,8 +612,8 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
|
|
| 585 |
item_3 = 1
|
| 586 |
|
| 587 |
# item_4 - Graus de Fundamentação ( Intervalo admissível de ajuste para o conjunto de fatores)
|
| 588 |
-
max = result.iloc[:,
|
| 589 |
-
min = result.iloc[:,
|
| 590 |
if num >= 5:
|
| 591 |
if min >= 0.8 and max <= 1.2:
|
| 592 |
item_4 = 3
|
|
@@ -887,7 +914,7 @@ interface = gr.Interface(
|
|
| 887 |
inputs=[
|
| 888 |
gr.components.File(label="Upload planilha", type="file", info="Importação de planilha padrão com o avaliando e os dados"),
|
| 889 |
#gr.components.Number(label="Número de linhas desejadas", default=10),
|
| 890 |
-
gr.Slider(3,
|
| 891 |
#gr.components.Dropdown(label="Tipo de imóvel", choices=["Terrenos e glebas","Tipologias com área construída"], default="Tipologias com área construída"),
|
| 892 |
gr.Radio(["Terrenos e glebas", "Tipologias com área construída"], label="Tipo de Imóvel", info="Escolha o tipo de imóvel"),
|
| 893 |
gr.Radio(["Completa p/ todos fatores analisados", "Completa p/ os fatores utilizados", "Situação paradigma"],
|
|
|
|
| 12 |
import shutil
|
| 13 |
import os
|
| 14 |
import plotly.express as px
|
| 15 |
+
import ast
|
| 16 |
|
| 17 |
#-----------------#
|
| 18 |
|
|
|
|
| 105 |
# Função de avaliação do imóvel
|
| 106 |
def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo de imovel',
|
| 107 |
caract_avaliando='Defina o item 1 de Fundamentação', ident_dados='Defina o item 3 de Fundamentação'):
|
| 108 |
+
|
| 109 |
+
# INPUT AVALIANDO
|
| 110 |
+
|
| 111 |
# Lendo a aba 'avaliando' da planilha
|
| 112 |
df_avaliando = pd.read_excel(planilha.name, 'avaliando')
|
| 113 |
|
| 114 |
+
# Verificar se a coluna 'Coordenadas' contém valores válidos (não NaN)
|
| 115 |
+
df_avaliando['Coordenadas'] = df_avaliando['Coordenadas'].apply(lambda x: ast.literal_eval(x) if not pd.isna(x) else np.nan)
|
| 116 |
+
|
| 117 |
+
# Criando as colunas "lat" e "lon" a partir da coluna "Coordenadas" ou definindo como NaN se estiver vazia
|
| 118 |
+
df_avaliando['lat'] = df_avaliando['Coordenadas'].apply(lambda x: round(x[0], 5) if not pd.isna(x) else np.nan)
|
| 119 |
+
df_avaliando['lon'] = df_avaliando['Coordenadas'].apply(lambda x: round(x[1], 5) if not pd.isna(x) else np.nan)
|
| 120 |
+
|
| 121 |
+
# Excluindo a coluna 'Coordenadas' se você não precisar dela mais
|
| 122 |
+
df_avaliando = df_avaliando.drop('Coordenadas', axis=1)
|
| 123 |
+
|
| 124 |
+
# INPUT DADOS
|
| 125 |
+
|
| 126 |
# Lendo a aba 'dados' da planilha, limitando o número de linhas
|
| 127 |
df_dados = pd.read_excel(planilha.name, 'dados').iloc[:int(num_linhas_desejadas)]
|
| 128 |
+
|
| 129 |
+
# Verificar se a coluna 'Coordenadas' contém valores válidos (não NaN)
|
| 130 |
+
df_dados['Coordenadas'] = df_dados['Coordenadas'].apply(lambda x: ast.literal_eval(x) if not pd.isna(x) else np.nan)
|
| 131 |
+
|
| 132 |
+
# Criando as colunas "lat" e "lon" a partir da coluna "Coordenadas" ou definindo como NaN se estiver vazia
|
| 133 |
+
df_dados['lat'] = df_dados['Coordenadas'].apply(lambda x: round(x[0], 5) if not pd.isna(x) else np.nan)
|
| 134 |
+
df_dados['lon'] = df_dados['Coordenadas'].apply(lambda x: round(x[1], 5) if not pd.isna(x) else np.nan)
|
| 135 |
+
|
| 136 |
+
# Excluindo a coluna 'Coordenadas' se você não precisar dela mais
|
| 137 |
+
df_dados = df_dados.drop('Coordenadas', axis=1)
|
| 138 |
|
| 139 |
#-----------------#
|
| 140 |
+
|
| 141 |
|
| 142 |
# fator de atratividade local (fal)
|
| 143 |
df_transp = df_dados.copy()
|
|
|
|
| 499 |
else:
|
| 500 |
result['Vunit'] = round((result['Valor_desc']/result['Área Terreno']), 2)
|
| 501 |
|
| 502 |
+
result = result[['lat','lon','Endereço','Atratividade local', 'Área Construída', 'Área Terreno', 'Testada', 'Topografia',
|
| 503 |
'Relevo','Superfície','Aproveitamento','Acessibilidade', 'Idade aparente e conservação', 'Padrão construtivo', 'Vagas',
|
| 504 |
'Coeficiente extra', 'Valor', 'fof','Valor_desc', 'Vunit','fal', 'fac', 'fat','fpe', 'ftp','frv','fsp',
|
| 505 |
'fap','fav', 'fic','fpd', 'fvg', 'fex']]
|
|
|
|
| 568 |
}
|
| 569 |
vc = dict_vc[num]
|
| 570 |
vc
|
| 571 |
+
result['z-score'] = round(abs((result['Vunit_hom'] - media) / desvio_padrao), 2)
|
| 572 |
result['Status'] = np.where(result['z-score'] > vc, 'rejeitado', 'aceito')
|
| 573 |
|
| 574 |
# cópia para dataframe na interface
|
|
|
|
| 612 |
item_3 = 1
|
| 613 |
|
| 614 |
# item_4 - Graus de Fundamentação ( Intervalo admissível de ajuste para o conjunto de fatores)
|
| 615 |
+
max = result.iloc[:, 20:33].max().max()
|
| 616 |
+
min = result.iloc[:, 20:33].min().min()
|
| 617 |
if num >= 5:
|
| 618 |
if min >= 0.8 and max <= 1.2:
|
| 619 |
item_4 = 3
|
|
|
|
| 914 |
inputs=[
|
| 915 |
gr.components.File(label="Upload planilha", type="file", info="Importação de planilha padrão com o avaliando e os dados"),
|
| 916 |
#gr.components.Number(label="Número de linhas desejadas", default=10),
|
| 917 |
+
gr.Slider(3, 26, value=26, label="Número de dados", info="Escolha o número de dados", step=1),
|
| 918 |
#gr.components.Dropdown(label="Tipo de imóvel", choices=["Terrenos e glebas","Tipologias com área construída"], default="Tipologias com área construída"),
|
| 919 |
gr.Radio(["Terrenos e glebas", "Tipologias com área construída"], label="Tipo de Imóvel", info="Escolha o tipo de imóvel"),
|
| 920 |
gr.Radio(["Completa p/ todos fatores analisados", "Completa p/ os fatores utilizados", "Situação paradigma"],
|