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