Spaces:
Build error
Build error
| 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)") | |