Spaces:
Sleeping
Sleeping
| import os | |
| import pandas as pd | |
| import streamlit as st | |
| from io import StringIO | |
| import sys | |
| # Define a persistent file path for the dataset | |
| DATA_FILE_PATH = "dataset.csv" | |
| # Page Title | |
| st.markdown("<h1 style='text-align:center; color:#FFD700;'>Hotel Data Set</h1>", unsafe_allow_html=True) | |
| # CSS styles | |
| st.markdown( | |
| """ | |
| <style> | |
| body { | |
| background-color: black; /* Set background color to black */ | |
| } | |
| .header { | |
| color: #FFD700; /* Gold for the header */ | |
| font-size: 48px; /* Larger font size for the header */ | |
| font-weight: bold; | |
| text-align: center; /* Center-align the header */ | |
| } | |
| .subheader { | |
| color: #D3D3D3; /* Light Gray for the subheader */ | |
| font-size: 32px; /* Slightly smaller font size for the subheader */ | |
| font-weight: normal; | |
| text-align: center; /* Center-align the subheader */ | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Function to load the dataset | |
| def load_dataset(): | |
| if os.path.exists(DATA_FILE_PATH): | |
| return pd.read_csv(DATA_FILE_PATH) | |
| else: | |
| return None | |
| # Check if dataset is in session state or load it from disk | |
| if "dataset" not in st.session_state: | |
| st.session_state["dataset"] = load_dataset() | |
| # File uploader widget to upload a new dataset | |
| uploaded_file = st.file_uploader("Choose a CSV file", type=["csv"]) | |
| if uploaded_file is not None: | |
| # Read the uploaded CSV file into a pandas DataFrame | |
| df = pd.read_csv(uploaded_file) | |
| # Save the dataset permanently to disk | |
| df.to_csv(DATA_FILE_PATH, index=False) | |
| # Store in session state | |
| st.session_state["dataset"] = df | |
| # Display success message | |
| st.success(f"Dataset uploaded and saved permanently as {DATA_FILE_PATH}!") | |
| # Access the dataset from session state | |
| df = st.session_state.get("dataset") | |
| if df is not None: | |
| st.subheader("Dataset Preview:") | |
| st.write(df) # Display the first 5 rows | |
| # Redirect the output of df.info() to a string buffer | |
| buffer = StringIO() | |
| df.info(buf=buffer) | |
| # Display the content in Streamlit as Markdown | |
| st.subheader("Info of the Dataset:") | |
| st.markdown(f"```{buffer.getvalue()}```") | |
| st.subheader("Dataset Shape (Rows, Columns):") | |
| st.write(df.shape) | |
| else: | |
| st.info("No dataset found. Please upload a CSV file.") | |
| # Define the URL of the background image (use your own image URL) | |
| background_image_url = "https://cdn-uploads.huggingface.co/production/uploads/675fab3a2d0851e23d23cad3/vulm4WwHmmA14tsVXYaTM.jpeg" | |
| # Apply custom CSS for the background image and overlay | |
| st.markdown( | |
| f""" | |
| <style> | |
| .stApp {{ | |
| background-image: url("{background_image_url}"); | |
| background-size: auto; | |
| background-position: repeat; | |
| height: 100vh; | |
| }} | |
| /* Semi-transparent overlay */ | |
| .stApp::before {{ | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: rgba(0, 0, 0, 0.4); /* Adjust transparency here (0.4 for 40% transparency) */ | |
| z-index: -1; | |
| }} | |
| /* Styling the content to ensure text visibility */ | |
| .stMarkdown {{ | |
| color: white; /* White text to ensure visibility */ | |
| font-size: 30px; /* Adjust font size for better readability */ | |
| }} | |
| </style> | |
| """, | |
| unsafe_allow_html=True | |
| ) | |
| st.markdown( | |
| """ | |
| <style> | |
| .custom-button { | |
| display: inline-block; | |
| padding: 5px 10px; | |
| font-size: 14px; | |
| color: #ffffff; | |
| background-color: #4CAF50; | |
| border: none; | |
| border-radius: 5px; | |
| text-align: center; | |
| text-decoration: none; | |
| transition: background-color 0.3s ease, transform 0.2s ease; | |
| cursor: pointer; | |
| } | |
| .custom-button:hover { | |
| background-color: #45a049; | |
| transform: scale(1.05); | |
| } | |
| .button-container { | |
| display: flex; | |
| justify-content: space-between; | |
| margin-top: 20px; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Navigation Buttons | |
| st.markdown( | |
| """ | |
| <div class="button-container"> | |
| <a href="/0_Problem_Statement" target="_self" class="custom-button">Previous ⏮️</a> | |
| <a href="/2_Data_Cleaning_and_Processing" target="_self" class="custom-button">Next ⏭️</a> | |
| </div> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |