Pegumenezes commited on
Commit
436a2b3
·
verified ·
1 Parent(s): 3a7f746

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +20 -15
src/streamlit_app.py CHANGED
@@ -13,6 +13,7 @@ from scipy.stats import shapiro, levene, kruskal
13
  import kagglehub
14
  import os
15
 
 
16
  # --- Configuração da Página do Streamlit ---
17
  st.set_page_config(layout="wide", page_title="Análise de Precificação de Imóveis")
18
  # A linha st.set_option foi removida pois não é mais necessária.
@@ -27,32 +28,36 @@ o preço de venda dos imóveis. O dashboard está dividido em duas etapas princi
27
  """)
28
 
29
  # --- Download e Carregamento do Dataset (com cache para performance) ---
 
30
  @st.cache_data
31
  def load_data():
32
- # Define um diretório de cache em um local com permissão de escrita (/tmp/)
33
- # Isso resolve o erro de permissão em ambientes de nuvem.
34
- cache_dir = "/tmp/kagglehub"
35
- os.makedirs(cache_dir, exist_ok=True)
36
- os.environ['KAGGLE_CACHE_DIR'] = cache_dir
37
-
38
- # O resto da função continua igual
39
- dataset_path = kagglehub.dataset_download("prevek18/ames-housing-dataset")
40
- csv_file_path = next(
41
- os.path.join(root, file)
42
- for root, _, files in os.walk(dataset_path)
43
- for file in files if file.endswith(".csv")
44
- )
45
- df = pd.read_csv(csv_file_path)
46
  df.columns = df.columns.str.replace('[^A-Za-z0-9_]+', '', regex=True).str.lower()
47
-
48
  if 'grlivarea' in df.columns:
49
  bins = [0, 1000, 1500, 2000, 2500, 3000, 4000, df['grlivarea'].max() + 1]
50
  labels = ['<1000', '1000-1500', '1500-2000', '2000-2500', '2500-3000', '3000-4000', '4000+']
51
  df['area_faixa'] = pd.cut(df['grlivarea'], bins=bins, labels=labels, include_lowest=True)
 
52
  return df
53
 
54
  df = load_data()
55
 
 
 
 
 
56
  # Exibir uma amostra dos dados
57
  if st.checkbox("Mostrar amostra dos dados brutos"):
58
  st.write("Amostra dos dados carregados:", df.head())
 
13
  import kagglehub
14
  import os
15
 
16
+
17
  # --- Configuração da Página do Streamlit ---
18
  st.set_page_config(layout="wide", page_title="Análise de Precificação de Imóveis")
19
  # A linha st.set_option foi removida pois não é mais necessária.
 
28
  """)
29
 
30
  # --- Download e Carregamento do Dataset (com cache para performance) ---
31
+ # --- Funções de Carregamento de Dados ---
32
  @st.cache_data
33
  def load_data():
34
+ """
35
+ Carrega o Ames Housing Dataset a partir de uma URL do GitHub para evitar
36
+ problemas de permissão em ambientes de nuvem.
37
+ """
38
+ url = "https://raw.githubusercontent.com/Viniciusalgueiro/Ameshousing/refs/heads/main/AmesHousing.csv"
39
+ try:
40
+ df = pd.read_csv(url)
41
+ except Exception as e:
42
+ st.error(f"Erro ao carregar os dados da URL: {e}")
43
+ return None # Retorna None em caso de falha
44
+
45
+ # --- Preparação dos dados (mesma lógica de antes) ---
 
 
46
  df.columns = df.columns.str.replace('[^A-Za-z0-9_]+', '', regex=True).str.lower()
47
+
48
  if 'grlivarea' in df.columns:
49
  bins = [0, 1000, 1500, 2000, 2500, 3000, 4000, df['grlivarea'].max() + 1]
50
  labels = ['<1000', '1000-1500', '1500-2000', '2000-2500', '2500-3000', '3000-4000', '4000+']
51
  df['area_faixa'] = pd.cut(df['grlivarea'], bins=bins, labels=labels, include_lowest=True)
52
+
53
  return df
54
 
55
  df = load_data()
56
 
57
+ # Adicione esta verificação para o caso de falha no download
58
+ if df is None:
59
+ st.stop() # Interrompe a execução do app se os dados não puderam ser carregados
60
+
61
  # Exibir uma amostra dos dados
62
  if st.checkbox("Mostrar amostra dos dados brutos"):
63
  st.write("Amostra dos dados carregados:", df.head())