Ezhil
Initial commit-folder structure
10d82a8
import streamlit as st
import pandas as pd
import base64
from models.data_processor import load_data
from functions.visualizations import generate_popularity_trends, generate_audio_features, generate_genre_analysis, \
generate_explicit_trends, generate_album_insights, generate_tempo_mood, generate_top_artists_songs, \
generate_album_release_trends, generate_duration_analysis, generate_streaming_insights, \
generate_feature_comparisons, generate_network_analysis
# Load data and display raw sample at the top
df = load_data()
if not df.empty:
st.write("**Raw Data Sample:**", df.head()) # Display raw data sample
else:
st.error("Failed to load raw data. Check the 'data/music_data.csv' file.")
# Sidebar
st.sidebar.title("Music Data Analysis")
# st.sidebar.markdown("[View Raw Data]('data/music_data.csv')", unsafe_allow_html=True) # Replace with your Google Drive ID
analysis_option = st.sidebar.selectbox(
"Choose Analysis",
[
"Popularity Trends Over Time",
"Audio Features Analysis",
"Genre & Artist Analysis",
"Explicit Content Trends",
"Album & Label Insights",
"Tempo & Mood Analysis",
"Top Artists and Songs",
"Album Release Trends",
"Track Duration Analysis",
"Streaming and Engagement Insights",
"Feature Comparisons Across Decades",
"Network Analysis"
]
)
st.sidebar.subheader("Filters")
if not df.empty and 'Decade' in df.columns:
decades = st.sidebar.multiselect("Select Decades", sorted(df['Decade'].unique()),
default=sorted(df['Decade'].unique()))
filtered_df = df[df['Decade'].isin(decades)] if decades else df
else:
st.sidebar.warning(
"No data loaded or 'Decade' column missing. Check the 'data' folder.")
filtered_df = pd.DataFrame()
# Main content
# st.image("assets/spotify-logo.png", width=100) # Spotify logo
st.title("Music Data Analysis Dashboard")
st.markdown("Explore trends and insights from a diverse music dataset.")
if analysis_option == "Popularity Trends Over Time":
generate_popularity_trends(filtered_df)
elif analysis_option == "Audio Features Analysis":
generate_audio_features(filtered_df)
elif analysis_option == "Genre & Artist Analysis":
generate_genre_analysis(filtered_df)
elif analysis_option == "Explicit Content Trends":
generate_explicit_trends(filtered_df)
elif analysis_option == "Album & Label Insights":
generate_album_insights(filtered_df)
elif analysis_option == "Tempo & Mood Analysis":
generate_tempo_mood(filtered_df)
elif analysis_option == "Top Artists and Songs":
generate_top_artists_songs(filtered_df)
elif analysis_option == "Album Release Trends":
generate_album_release_trends(filtered_df)
elif analysis_option == "Track Duration Analysis":
generate_duration_analysis(filtered_df)
elif analysis_option == "Streaming and Engagement Insights":
generate_streaming_insights(filtered_df)
elif analysis_option == "Feature Comparisons Across Decades":
generate_feature_comparisons(filtered_df)
elif analysis_option == "Network Analysis":
generate_network_analysis(filtered_df)
# Footer
# st.sidebar.markdown("Built with Streamlit by Grok 3 (xAI)")