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"],
|