Hotel_Data_Analysis / pages /1_Hotel_Data.py
Mpavan45's picture
Update pages/1_Hotel_Data.py
15017bf verified
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,
)