import streamlit as st from PIL import Image import pandas as pd import numpy as np import base64 import joblib from sklearn.preprocessing import LabelEncoder, MinMaxScaler import random # Configura o pandas para exibir floats com 2 casas decimais pd.set_option('display.float_format', '{:.2f}'.format) # Page configuration st.set_page_config( page_title="Viabilidade", page_icon="🔎", layout="wide", initial_sidebar_state="expanded" ) def validar_e_transformar_dados(novos_dados: pd.DataFrame): # 1. Carregar encoders se existirem try: label_encoders = joblib.load(f'modelo/label_encoders.joblib') except FileNotFoundError: label_encoders = {} # 2. Carregar preprocessor preprocessor = joblib.load(f'modelo/modelo_preprocessor.joblib') # 3. Obter colunas do treinamento try: colunas_numericas = preprocessor.transformers_[0][2] except: colunas_numericas = [] colunas_categoricas = list(label_encoders.keys()) todas_colunas_esperadas = colunas_numericas + colunas_categoricas # 4. Validar colunas if set(novos_dados.columns) != set(todas_colunas_esperadas): raise ValueError(f"\n❌ Colunas esperadas: {todas_colunas_esperadas}\n🔴 Encontradas: {novos_dados.columns.tolist()}") # 5. Aplicar LabelEncoders for col, encoder in label_encoders.items(): novos_dados[col] = encoder.transform(novos_dados[col]) # 6. Aplicar scaler dados_transformados = preprocessor.transform(novos_dados) print("Transformação de novos dados concluída.") return dados_transformados # Função para codificar a imagem em base64 def encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode('utf-8') # Interface do Streamlit logo = Image.open('img/logo.png') img = Image.open('img/fundo1.png') image_path="fundo.png" img.save(image_path) # Getting the base64 string base64_image = encode_image(image_path) # Usando HTML para centralizar a imagem st.markdown( f"""
Estudo de Viabilidade de Projeto
Enviar a Planilha CSV com as seguintes informações
investimento, preco, custo_variavel, demanda_1, demanda_2, demanda_3, demanda_4, demanda_5, selic