Spaces:
Sleeping
Sleeping
Update src/streamlit_app.py
Browse files- 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 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 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())
|