DavidSB commited on
Commit
c6fbb07
1 Parent(s): 8875b86

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -5
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[:, 19:32].max().max()
589
- min = result.iloc[:, 19:32].min().min()
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, 30, value=3, label="Número de dados", info="Escolha o número de dados", step=1),
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"],