added filter disabled broken cells and starting spoken voice generic results

This commit is contained in:
2026-02-02 23:32:10 +01:00
parent fd14038253
commit 97c4b07208

View File

@@ -154,10 +154,48 @@ def _():
return return
@app.cell
def _(S):
filter_form = mo.md('''
{age}
{gender}
{ethnicity}
{income}
{consumer}
'''
).batch(
age=mo.ui.multiselect(options=S.options_age, value=S.options_age, label="Select Age Group(s):"),
gender=mo.ui.multiselect(options=S.options_gender, value=S.options_gender, label="Select Gender(s):"),
ethnicity=mo.ui.multiselect(options=S.options_ethnicity, value=S.options_ethnicity, label="Select Ethnicities:"),
income=mo.ui.multiselect(options=S.options_income, value=S.options_income, label="Select Income Group(s):"),
consumer=mo.ui.multiselect(options=S.options_consumer, value=S.options_consumer, label="Select Consumer Groups:")
).form()
mo.md(f'''
---
# Data Filter
{filter_form}
''')
return
@app.cell @app.cell
def _(data_validated): def _(data_validated):
# drop rows where 'consumer' is null # mo.stop(filter_form.value is None, mo.md("**Please submit filter above to proceed**"))
# data = data_validated.filter(pl.col('Consumer').is_not_null()) # _d = S.filter_data(data_validated, age=filter_form.value['age'], gender=filter_form.value['gender'], income=filter_form.value['income'], ethnicity=filter_form.value['ethnicity'], consumer=filter_form.value['consumer'])
# # Stop execution and prevent other cells from running if no data is selected
# mo.stop(len(_d.collect()) == 0, mo.md("**No Data available for current filter combination**"))
# data = _d
data = data_validated data = data_validated
data.collect() data.collect()
return (data,) return (data,)
@@ -222,7 +260,7 @@ def _():
return return
@app.cell @app.cell(disabled=True)
def _(): def _():
mo.md(r""" mo.md(r"""
## Best performing: Original vs Refined frankenstein ## Best performing: Original vs Refined frankenstein
@@ -230,7 +268,7 @@ def _():
return return
@app.cell @app.cell(disabled=True)
def _(S, data): def _(S, data):
char_refine_rank = S.get_character_refine(data)[0] char_refine_rank = S.get_character_refine(data)[0]
# print(char_rank.collect().head()) # print(char_rank.collect().head())
@@ -273,7 +311,7 @@ def _(S, char_rank):
return return
@app.cell @app.cell(disabled=True)
def _(): def _():
mo.md(r""" mo.md(r"""
### Statistical Significance Character Ranking ### Statistical Significance Character Ranking
@@ -281,7 +319,7 @@ def _():
return return
@app.cell @app.cell(disabled=True)
def _(S, char_rank): def _(S, char_rank):
_pairwise_df, _meta = S.compute_ranking_significance(char_rank) _pairwise_df, _meta = S.compute_ranking_significance(char_rank)
@@ -385,10 +423,10 @@ def _(S, char_df):
""" """
mo.md(_content) mo.md(_content)
return character_colors, consistent_sort_order return
@app.cell @app.cell(disabled=True)
def _(): def _():
mo.md(r""" mo.md(r"""
## Statistical significance best characters ## Statistical significance best characters
@@ -400,176 +438,6 @@ def _():
return return
# @app.cell(hide_code=True)
# def _():
# mo.md(r"""
# # BC per Consumer
# """)
# return
# @app.cell
# def _():
# split_group = 'Consumer'
# return (split_group,)
# @app.cell
# def _(split_group):
# mo.md(rf"""
# ## Character Ranking Points (per {split_group} segment)
# """)
# return
# @app.cell
# def _(S, data):
# _content = ""
# for _consumer_group, _consumer_df in utils.split_consumer_groups(data).items():
# _char_rank = S.get_character_ranking(_consumer_df)[0]
# _char_rank_weighted = calculate_weighted_ranking_scores(_char_rank)
# _plot = S.plot_weighted_ranking_score(
# _char_rank_weighted,
# title=f'Most Popular Character - Weighted Popularity Score - CONSUMER: "{_consumer_group.replace("_", " ").replace("Woth", 'Worth')}"<br>(1st=3pts, 2nd=2pts, 3rd=1pt)',
# x_label='Voice'
# )
# _content += f"""
# {mo.ui.altair_chart(_plot)}
# """
# mo.md(_content)
# return
# @app.cell
# def _(split_group):
# mo.md(rf"""
# ## Character Ranking Place 1-2-3 in one (per {split_group})
# """)
# return
# @app.cell
# def _(S, data):
# _content = ""
# for _consumer_group, _consumer_df in utils.split_consumer_groups(data).items():
# _char_rank = S.get_character_ranking(_consumer_df)[0]
# _plot = S.plot_top3_ranking_distribution(_char_rank, x_label='Character Personality', title='Character Personality: Rankings Top 3 - CONSUMER: "'+_consumer_group.replace("_", " ").replace("Woth", 'Worth')+'"')
# _content += f"""
# {mo.ui.altair_chart(_plot)}
# """
# mo.md(_content)
# return
# @app.cell
# def _(split_group):
# mo.md(rf"""
# ## Character Ranking times 1st place (per {split_group})
# """)
# return
# @app.cell
# def _(S, data):
# _content = ""
# for _consumer_group, _consumer_df in utils.split_consumer_groups(data).items():
# _char_rank = S.get_character_ranking(_consumer_df)[0]
# _plot = S.plot_most_ranked_1(_char_rank, title=f'Most Popular Character - CONSUMER: "{_consumer_group.replace("_", " ").replace("Woth", 'Worth')}"<br>(Number of Times Ranked 1st)', x_label='Character Personality')
# _content += f"""
# {mo.ui.altair_chart(_plot)}
# """
# mo.md(_content)
# return
# @app.cell
# def _(split_group):
# mo.md(rf"""
# ## Predefined personality traits WordClouds per {split_group}
# """)
# return
# @app.cell
# def _(S, data):
# _content = ""
# for _consumer_group, _consumer_df in utils.split_consumer_groups(data).items():
# _top8_traits = S.get_top_8_traits(_consumer_df)[0]
# _plot = S.plot_traits_wordcloud(
# data=_top8_traits,
# column='Top_8_Traits',
# title=f'Most Prominent Personality Traits - CONSUMER: "{_consumer_group.replace("_", " ").replace("Woth", "Worth")}"',
# )
# _content += f"""
# {_plot}
# """
# mo.md(_content)
# return
# @app.cell
# def _(split_group):
# mo.md(rf"""
# ## Frequency traits chosen - per {split_group} segment
# """)
# return
# @app.cell
# def _(S, character_colors, consistent_sort_order, data):
# top_char = "The Coach"
# _content = ""
# for _consumer_group, _consumer_df in utils.split_consumer_groups(data).items():
# _char_df = S.get_character_refine(_consumer_df)[0]
# _freq_df, _ = S.transform_character_trait_frequency(_char_df, top_char)
# _main_color, _highlight_color = character_colors[top_char]
# _chart = S.plot_single_character_trait_frequency(
# data=_freq_df,
# character_name=top_char,
# bar_color=_main_color,
# highlight_color=_highlight_color,
# trait_sort_order=consistent_sort_order,
# title=f"""Top Personality Traits for '{top_char}' - CONSUMER: "{_consumer_group.replace('_', ' ').replace("Woth", "Worth")}"""
# )
# _content += f"""
# {mo.ui.altair_chart(_chart)}
# """
# mo.md(_content)
# return
# @app.cell
# def _():
# mo.md(r"""
# # BC per Gender
# """)
# return
@app.cell @app.cell
def _(): def _():
return return
@@ -590,11 +458,24 @@ def _():
return return
@app.cell
def _():
mo.md(r"""
## 8 Most Chosen
""")
return
@app.cell @app.cell
def _(S, data): def _(S, data):
top3_voices = S.get_top_3_voices(data)[0] v_18_8_3 = S.get_18_8_3(data)[0].collect()
top3_voices_weighted = calculate_weighted_ranking_scores(top3_voices) return (v_18_8_3,)
return top3_voices, top3_voices_weighted
@app.cell
def _(S, v_18_8_3):
S.plot_voice_selection_counts(v_18_8_3)
return
@app.cell(hide_code=True) @app.cell(hide_code=True)
@@ -607,6 +488,13 @@ def _():
return return
@app.cell
def _(S, data):
top3_voices = S.get_top_3_voices(data)[0]
top3_voices_weighted = calculate_weighted_ranking_scores(top3_voices)
return top3_voices, top3_voices_weighted
@app.cell @app.cell
def _(S, top3_voices): def _(S, top3_voices):
_plot = S.plot_ranking_distribution(top3_voices, x_label='Voice') _plot = S.plot_ranking_distribution(top3_voices, x_label='Voice')