Dash_apps_docker_vs / load_process.py
albertoakel's picture
Fix: garante download completo antes da leitura dos dados
f38b172
# load_process.py
import os
import pandas as pd
import geopandas as gpd
from download_data import get_data_file
def load_bairros():
return gpd.read_file(get_data_file("shape_bairros.gpkg"))
def load_coleta():
return gpd.read_file(get_data_file("shape_coleta.gpkg"))
def load_descartes():
return gpd.read_file(get_data_file("Pontos_descartes_ML.gpkg"))
def load_tabelas():
df1 = pd.read_csv(get_data_file("tabela_total_com_DIEs.csv"))
df2 = pd.read_csv(get_data_file("Bairros_Ncoleta.csv"))
return df1, df2
def load_files(ponto_descarte=None):
# Leitura dos dados principais
gdf = gpd.read_file(get_data_file("shape_bairros.gpkg")).rename(columns={'NM_BAIRRO': 'Bairro'})
df1 = pd.read_csv(get_data_file("tabela_total_com_DIEs.csv"))
df2 = pd.read_csv(get_data_file("Bairros_Ncoleta.csv"))
# Merge das tabelas
df = df1.merge(df2, on='Bairro', how='left')
gdf_m = gdf.merge(df, on='Bairro', how='left')
# % de moradores sem renda
gdf_m['NS'] = (gdf_m['Mor'] - gdf_m['N_ren']) / gdf_m['Mor']
colunas = list(gdf_m.columns)
colunas.remove('NS')
colunas.insert(7, 'NS')
gdf_m = gdf_m[colunas]
# Classificação de risco
def categorizar_dies(dies):
if dies == 0:
return 1
elif 1 <= dies <= 3:
return 2
elif 4 <= dies <= 6:
return 3
else:
return 4
gdf_m['Risco'] = gdf_m['DIEs'].apply(categorizar_dies)
# Dados para gráficos
df_plot = gdf_m.drop(columns=['geometry', 'V_setores_val'])
list_feature = df_plot.drop(columns='Risco').select_dtypes(include=['number']).columns
feat_options = [{'label': f, 'value': f, 'description': None} for f in list_feature]
descr = [
'Área do Bairro (km²)',
'Número Total de Habitações',
'Número Total de Moradores',
'Relação Moradores/Habitação',
'Número de Moradores com Renda',
'% de moradores sem renda',
'Renda média do Morador',
'Mediana da renda do Morador',
'Taxa de alfabetização',
'IDH Renda',
'IDH Longevidade',
'IDH Educação',
'Índice de Desenvolvimento Humano',
'Quantidade de Depósitos Irregulares',
'Concentração de riqueza por área',
'Percentual da população com rendimento',
'Quantidade estimada de Depósitos Irregulares',
'Média de dias de coleta de lixo',
'Quantidade de setores/rotas de coleta'
]
for i, d in enumerate(descr):
if i < len(feat_options):
feat_options[i]['description'] = d
if ponto_descarte:
gdf_p = gpd.read_file(
get_data_file("Pontos_descartes_ML.gpkg")
)
return gdf_m, df_plot, list_feature, feat_options, gdf_p
return gdf_m, df_plot, list_feature, feat_options