Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -10,8 +10,11 @@ from reportlab.platypus import SimpleDocTemplate, Paragraph
|
|
10 |
from reportlab.lib.styles import getSampleStyleSheet
|
11 |
import shutil
|
12 |
import os
|
|
|
13 |
|
14 |
|
|
|
|
|
15 |
# Function to save results in a PDF file
|
16 |
def save_results_to_pdf(results_formatados, intervalo_confiança, valores_finais):
|
17 |
doc = SimpleDocTemplate("resultados.pdf", pagesize=letter)
|
@@ -34,6 +37,8 @@ def save_results_to_pdf(results_formatados, intervalo_confiança, valores_finais
|
|
34 |
|
35 |
# Build the PDF
|
36 |
doc.build(elements)
|
|
|
|
|
37 |
|
38 |
def renderizar_dataframe(df):
|
39 |
try:
|
@@ -49,7 +54,45 @@ def renderizar_dataframe(df):
|
|
49 |
return tabela_com_rolagem
|
50 |
except Exception as e:
|
51 |
return f"Erro ao processar o DataFrame: {str(e)}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
# Função de avaliação do imóvel
|
55 |
def avaliacao_imovel(planilha, num_linhas_desejadas=10):
|
@@ -95,7 +138,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
|
|
95 |
df_area_terreno['fat'] = round((df_area_terreno['razao']) ** (df_area_terreno['n']), 2)
|
96 |
df_area_terreno = df_area_terreno[['fat']]
|
97 |
|
98 |
-
|
99 |
|
100 |
# fator topografia (ftp)
|
101 |
# dicionário topografia
|
@@ -228,7 +271,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
|
|
228 |
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)
|
229 |
result['Valor_desc'] = round(result['Valor']*(result['fof']), 2)
|
230 |
result['Vunit'] = round((result['Valor_desc']/result['Área Construída']), 2)
|
231 |
-
result = result[['Atratividade local', 'Área Construída', 'Área Terreno', 'Topografia',
|
232 |
'Idade aparente e conservação', 'Padrão construtivo', 'Vagas',
|
233 |
'Coeficiente extra', 'Valor', 'fof','Valor_desc', 'Vunit','fal', 'fac', 'fat', 'ftp', 'fic',
|
234 |
'fpd', 'fvg', 'fex']]
|
@@ -501,6 +544,11 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
|
|
501 |
result_valores.columns = ['Nome da Coluna', 'Valor']
|
502 |
result_valores.to_excel(writer, sheet_name='valor', index=False)
|
503 |
|
|
|
|
|
|
|
|
|
|
|
504 |
#-----------------#
|
505 |
|
506 |
# Salve o DataFrame 'result' em uma planilha
|
@@ -515,7 +563,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
|
|
515 |
#-----------------#
|
516 |
|
517 |
# Retorna tanto a planilha quanto os resultados formatados
|
518 |
-
return output_file, 'resultados.pdf', result_render, resultados_formatados, intervalo_confiança, valores_finais
|
519 |
|
520 |
|
521 |
# Interface do Gradio com input como arquivo XLS ou XLSX
|
@@ -532,6 +580,7 @@ interface = gr.Interface(
|
|
532 |
gr.components.Textbox(label="Resultados estatísticos"),
|
533 |
gr.components.Textbox(label="Intervalo de confiança de 80%"),
|
534 |
gr.components.Textbox(label="Valores Calculados"),
|
|
|
535 |
|
536 |
],
|
537 |
live=True,
|
|
|
10 |
from reportlab.lib.styles import getSampleStyleSheet
|
11 |
import shutil
|
12 |
import os
|
13 |
+
import plotly.express as px
|
14 |
|
15 |
|
16 |
+
#-----------------#
|
17 |
+
|
18 |
# Function to save results in a PDF file
|
19 |
def save_results_to_pdf(results_formatados, intervalo_confiança, valores_finais):
|
20 |
doc = SimpleDocTemplate("resultados.pdf", pagesize=letter)
|
|
|
37 |
|
38 |
# Build the PDF
|
39 |
doc.build(elements)
|
40 |
+
|
41 |
+
#-----------------#
|
42 |
|
43 |
def renderizar_dataframe(df):
|
44 |
try:
|
|
|
54 |
return tabela_com_rolagem
|
55 |
except Exception as e:
|
56 |
return f"Erro ao processar o DataFrame: {str(e)}"
|
57 |
+
|
58 |
+
#-----------------#
|
59 |
+
|
60 |
+
def plotar_mapa_com_dois_dataframes(df1, df2):
|
61 |
+
fig1 = px.scatter_mapbox(
|
62 |
+
df1,
|
63 |
+
lat='lat',
|
64 |
+
lon='lon',
|
65 |
+
zoom=15,
|
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(
|
73 |
+
df2,
|
74 |
+
lat='lat',
|
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 |
+
|
93 |
+
return fig1
|
94 |
+
|
95 |
+
#-----------------#
|
96 |
|
97 |
# Função de avaliação do imóvel
|
98 |
def avaliacao_imovel(planilha, num_linhas_desejadas=10):
|
|
|
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 |
|
143 |
# fator topografia (ftp)
|
144 |
# dicionário topografia
|
|
|
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']]
|
|
|
544 |
result_valores.columns = ['Nome da Coluna', 'Valor']
|
545 |
result_valores.to_excel(writer, sheet_name='valor', index=False)
|
546 |
|
547 |
+
#-----------------#
|
548 |
+
|
549 |
+
mapa = plotar_mapa_com_dois_dataframes(result, df_avaliando)
|
550 |
+
#mapa = criar_mapa(df_avaliando) #novo
|
551 |
+
|
552 |
#-----------------#
|
553 |
|
554 |
# Salve o DataFrame 'result' em uma planilha
|
|
|
563 |
#-----------------#
|
564 |
|
565 |
# Retorna tanto a planilha quanto os resultados formatados
|
566 |
+
return output_file, 'resultados.pdf', result_render, resultados_formatados, intervalo_confiança, valores_finais, mapa #novo
|
567 |
|
568 |
|
569 |
# Interface do Gradio com input como arquivo XLS ou XLSX
|
|
|
580 |
gr.components.Textbox(label="Resultados estatísticos"),
|
581 |
gr.components.Textbox(label="Intervalo de confiança de 80%"),
|
582 |
gr.components.Textbox(label="Valores Calculados"),
|
583 |
+
gr.Plot(label="Geolocalização da amostra"), #novo
|
584 |
|
585 |
],
|
586 |
live=True,
|