from typing import List import streamlit as st from common.demographics import by_gender, by_age_group product_age_data = st.session_state["product_age_metrics_df"] product_gender_data = st.session_state["product_gender_metrics_df"] show_data = False with st.sidebar: selected_artist = st.selectbox( label="Choose artist", options=st.session_state["artists"], index=st.session_state["index"], key="artist", ) if selected_artist: dem_territory_multiselect: List[str] = st.multiselect( "Choose territories", product_gender_data[product_gender_data["ARTIST"] == selected_artist][ "TERRITORY" ].unique(), ) if dem_territory_multiselect: gender_options: List[str] = st.multiselect( "Choose gender values", product_gender_data["GENDER_C"].unique(), ) age_group_options: List[str] = st.multiselect( "Choose gender values", product_age_data["AGE_RANGE_C"].unique(), ) st.write( "💡 You can also leave gender and age group values empty to see all available groups." ) show_data = st.button("Show data") # Update the index. It is used in the select box. st.session_state["index"] = st.session_state["artists"].index(st.session_state["artist"]) if show_data: if dem_territory_multiselect: left, right = st.columns(2) with left: st.write( '

Most popular products by gender:

', unsafe_allow_html=True, ) by_gender( product_gender_data, selected_artist, dem_territory_multiselect, gender_options, product_gender_data["GENDER_C"].unique(), ) with right: st.write( '

Most popular products by age group:

', unsafe_allow_html=True, ) by_age_group( product_age_data, selected_artist, dem_territory_multiselect, age_group_options, product_age_data["AGE_RANGE_C"].unique(), ) else: st.write("Please choose artist and territory from left menu.")