DavidSB commited on
Commit
a022aa4
1 Parent(s): e780392

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -20
app.py CHANGED
@@ -12,7 +12,6 @@ import shutil
12
  import os
13
  import plotly.express as px
14
 
15
-
16
  #-----------------#
17
 
18
  # Function to save results in a PDF file
@@ -21,20 +20,16 @@ def save_results_to_pdf(results_formatados, intervalo_confiança, valores_finais
21
  styles = getSampleStyleSheet()
22
 
23
  # Create a list of elements to include in the PDF
24
- elements = []
25
-
26
  # Add the formatted results to the PDF
27
  formatted_results = Paragraph(results_formatados, styles["Normal"])
28
- elements.append(formatted_results)
29
-
30
  # Add the intervalo de confianca to the PDF
31
  confianca = Paragraph(intervalo_confiança, styles["Normal"])
32
  elements.append(confianca)
33
-
34
  # Add the valores calculados to the PDF
35
  calculados = Paragraph(valores_finais, styles["Normal"])
36
- elements.append(calculados)
37
-
38
  # Build the PDF
39
  doc.build(elements)
40
 
@@ -65,8 +60,7 @@ def plotar_mapa_com_dois_dataframes(df1, df2):
65
  zoom=12.5,
66
  center={"lat": df1['lat'].mean(), "lon": df1['lon'].mean()},
67
  color_discrete_sequence=['#008B8B'],
68
- )
69
-
70
  fig1.update_traces(marker=dict(size=10)) # Define o tamanho dos marcadores para o DataFrame 1
71
 
72
  fig2 = px.scatter_mapbox(
@@ -75,18 +69,15 @@ def plotar_mapa_com_dois_dataframes(df1, df2):
75
  lon='lon',
76
  color_discrete_sequence=['orange'],
77
  )
78
-
79
  fig2.update_traces(marker=dict(size=20)) # Define o tamanho dos marcadores para o DataFrame 2
80
 
81
  # Combine as duas figuras em uma única figura
82
  for data in fig2.data:
83
  fig1.add_trace(data)
84
-
85
  # Personalize o layout do mapa, se desejar
86
  fig1.update_layout(
87
  mapbox_style="carto-positron",
88
  )
89
-
90
  # Mostrar o mapa
91
  fig1.show()
92
 
@@ -137,6 +128,43 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
137
  df_area_terreno['n'] = df_area_terreno['dif'].apply(lambda dif: 0.250 if dif <= x_at else 0.125)
138
  df_area_terreno['fat'] = round((df_area_terreno['razao']) ** (df_area_terreno['n']), 2)
139
  df_area_terreno = df_area_terreno[['fat']]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
 
141
  #-----------------#
142
 
@@ -148,6 +176,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
148
  'declive_leve 5% e 30%': 0.90,
149
  'aclive_acentuado >30%': 0.85,
150
  'declive_acentuado >30%': 0.80,
 
151
  }
152
 
153
  # cria dataframe apenas com as colunas necessárias a partir do dataframe dos dados
@@ -191,7 +220,8 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
191
  'id>50_novo': 0.30,
192
  'id>50_bom': 0.20,
193
  'id>50_reparos simples': 0.15,
194
- 'id>50_reparos importantes': 0.10
 
195
  }
196
  # cria dataframe apenas com as colunas necessárias a partir do dataframe dos dados
197
  df_idade_cons = df_dados.copy()
@@ -222,7 +252,8 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
222
  'médio/baixo_comercial': 1.08,
223
  'médio_comercial': 1.15,
224
  'médio/alto_comercial': 1.25,
225
- 'alto_comercial': 1.40
 
226
  }
227
 
228
  # cria dataframe apenas com as colunas necessárias a partir do dataframe dos dados
@@ -267,23 +298,24 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
267
 
268
  #-----------------#
269
 
270
- # concatemando o dataframe principal com as dataframes dos fatores
271
- result = pd.concat([df_dados, df_transp, df_area_const, df_area_terreno, df_topografia, df_idade_cons, df_padrao, df_vaga, df_exc], axis=1)
272
  result['Valor_desc'] = round(result['Valor']*(result['fof']), 2)
273
  result['Vunit'] = round((result['Valor_desc']/result['Área Construída']), 2)
274
- result = result[['lat','lon','Atratividade local', 'Área Construída', 'Área Terreno', 'Topografia',
275
  'Idade aparente e conservação', 'Padrão construtivo', 'Vagas',
276
- 'Coeficiente extra', 'Valor', 'fof','Valor_desc', 'Vunit','fal', 'fac', 'fat', 'ftp', 'fic',
277
  'fpd', 'fvg', 'fex']]
278
  result['Vunit_hom'] = round(result['Vunit'] * result['fal'] * \
279
  result['fac'] * \
280
  result['fat'] * \
 
281
  result['ftp'] * \
282
  result['fic'] * \
283
  result['fpd'] * \
284
  result['fvg'] * \
285
  result['fex'], 2)
286
-
287
 
288
  # RESULTADOS ESTATÍSTICOS INICIAIS
289
  num = len(result)
 
12
  import os
13
  import plotly.express as px
14
 
 
15
  #-----------------#
16
 
17
  # Function to save results in a PDF file
 
20
  styles = getSampleStyleSheet()
21
 
22
  # Create a list of elements to include in the PDF
23
+ elements = []
 
24
  # Add the formatted results to the PDF
25
  formatted_results = Paragraph(results_formatados, styles["Normal"])
26
+ elements.append(formatted_results)
 
27
  # Add the intervalo de confianca to the PDF
28
  confianca = Paragraph(intervalo_confiança, styles["Normal"])
29
  elements.append(confianca)
 
30
  # Add the valores calculados to the PDF
31
  calculados = Paragraph(valores_finais, styles["Normal"])
32
+ elements.append(calculados)
 
33
  # Build the PDF
34
  doc.build(elements)
35
 
 
60
  zoom=12.5,
61
  center={"lat": df1['lat'].mean(), "lon": df1['lon'].mean()},
62
  color_discrete_sequence=['#008B8B'],
63
+ )
 
64
  fig1.update_traces(marker=dict(size=10)) # Define o tamanho dos marcadores para o DataFrame 1
65
 
66
  fig2 = px.scatter_mapbox(
 
69
  lon='lon',
70
  color_discrete_sequence=['orange'],
71
  )
 
72
  fig2.update_traces(marker=dict(size=20)) # Define o tamanho dos marcadores para o DataFrame 2
73
 
74
  # Combine as duas figuras em uma única figura
75
  for data in fig2.data:
76
  fig1.add_trace(data)
 
77
  # Personalize o layout do mapa, se desejar
78
  fig1.update_layout(
79
  mapbox_style="carto-positron",
80
  )
 
81
  # Mostrar o mapa
82
  fig1.show()
83
 
 
128
  df_area_terreno['n'] = df_area_terreno['dif'].apply(lambda dif: 0.250 if dif <= x_at else 0.125)
129
  df_area_terreno['fat'] = round((df_area_terreno['razao']) ** (df_area_terreno['n']), 2)
130
  df_area_terreno = df_area_terreno[['fat']]
131
+
132
+ #-----------------#
133
+
134
+ # fator profundidade (fpe)
135
+ # Defina a função coeficiente_profundidade antes de criar os DataFrames
136
+ def coeficiente_profundidade(row):
137
+ A = row['Área Terreno']
138
+ t = row['Testada']
139
+
140
+ pe = round(A/t, 2)
141
+ hipotese_1 = A > 5000 and pe > 90
142
+ hipotese_2 = A <= 5000 or (A > 5000 and pe <= 90)
143
+
144
+ if hipotese_1:
145
+ coef_pe = round(4.8 * (t ** 0.2) * (A ** -0.4), 3)
146
+ else:
147
+ if pe < 20:
148
+ coef_pe = round((pe/20) ** 0.5, 3)
149
+ elif 20 <= pe < 33:
150
+ coef_pe = 1
151
+ elif 33 <= pe < 90:
152
+ coef_pe = round((33/pe) ** 0.5, 3)
153
+ else:
154
+ coef_pe = 0.6
155
+
156
+ return coef_pe
157
+
158
+ # Crie os DataFrames df_profundidade e df_profundidade_aval
159
+ df_profundidade = df_dados[['Área Terreno','Testada']].copy()
160
+ df_profundidade['coef_pe'] = df_profundidade.apply(coeficiente_profundidade, axis=1)
161
+
162
+ # Crie o DataFrame df_profundidade_aval da mesma maneira, se necessário
163
+ df_profundidade_aval = df_avaliando[['Área Terreno','Testada']].copy()
164
+ df_profundidade_aval['coef_pe'] = df_profundidade_aval.apply(coeficiente_profundidade, axis=1)
165
+
166
+ df_profundidade['fpe'] = round(df_profundidade_aval['coef_pe'][0]/df_profundidade['coef_pe'],2)
167
+ df_profundidade = df_profundidade[['fpe']]
168
 
169
  #-----------------#
170
 
 
176
  'declive_leve 5% e 30%': 0.90,
177
  'aclive_acentuado >30%': 0.85,
178
  'declive_acentuado >30%': 0.80,
179
+ 'não se aplica' : 1,
180
  }
181
 
182
  # cria dataframe apenas com as colunas necessárias a partir do dataframe dos dados
 
220
  'id>50_novo': 0.30,
221
  'id>50_bom': 0.20,
222
  'id>50_reparos simples': 0.15,
223
+ 'id>50_reparos importantes': 0.10,
224
+ 'não se aplica' : 1,
225
  }
226
  # cria dataframe apenas com as colunas necessárias a partir do dataframe dos dados
227
  df_idade_cons = df_dados.copy()
 
252
  'médio/baixo_comercial': 1.08,
253
  'médio_comercial': 1.15,
254
  'médio/alto_comercial': 1.25,
255
+ 'alto_comercial': 1.40,
256
+ 'não se aplica' : 1,
257
  }
258
 
259
  # cria dataframe apenas com as colunas necessárias a partir do dataframe dos dados
 
298
 
299
  #-----------------#
300
 
301
+ # concatemando o dataframe principal com as dataframes dos fatores
302
+ result = pd.concat([df_dados, df_transp, df_area_const, df_area_terreno, df_profundidade, df_topografia, df_idade_cons, df_padrao, df_vaga, df_exc], axis=1)
303
  result['Valor_desc'] = round(result['Valor']*(result['fof']), 2)
304
  result['Vunit'] = round((result['Valor_desc']/result['Área Construída']), 2)
305
+ result = result[['lat','lon','Atratividade local', 'Área Construída', 'Área Terreno', 'Testada', 'Topografia',
306
  'Idade aparente e conservação', 'Padrão construtivo', 'Vagas',
307
+ 'Coeficiente extra', 'Valor', 'fof','Valor_desc', 'Vunit','fal', 'fac', 'fat','fpe', 'ftp', 'fic',
308
  'fpd', 'fvg', 'fex']]
309
  result['Vunit_hom'] = round(result['Vunit'] * result['fal'] * \
310
  result['fac'] * \
311
  result['fat'] * \
312
+ result['fpe'] * \
313
  result['ftp'] * \
314
  result['fic'] * \
315
  result['fpd'] * \
316
  result['fvg'] * \
317
  result['fex'], 2)
318
+ #-----------------#
319
 
320
  # RESULTADOS ESTATÍSTICOS INICIAIS
321
  num = len(result)