All problems

StreamVerse Engagement Score

hardPythonGroupByAggregation

Data science wants a simple "engagement score" per subscriber — average minutes watched per distinct show — to feed into a churn model later. They do not trust the metric for a subscriber who has barely watched anything, so a subscriber has to have reached across a certain number of different shows before they get a score at all. How many is still being argued about, and it will keep moving while the churn model is tuned, so it comes in with the request rather than being fixed in the report.

Watch events

id subscriber_id show_id watch_minutes watch_date
1 1 1 45 2023-05-01
2 1 5 60 2023-05-03
3 2 3 20 2023-05-02
4 3 2 55 2023-05-05
5 4 1 40 2023-05-06
6 4 4 70 2023-05-08
7 1 3 25 2023-05-10
8 3 5 50 2023-05-11
9 2 2 30 2023-05-12
10 5 4 65 2023-05-14

Subscribers

id name plan signup_date country
1 Ana Torres premium 2022-11-01 US
2 Ben Osei basic 2023-01-15 UK
3 Chloe Martin standard 2023-02-20 US
4 Dev Malhotra premium 2023-03-10 IN
5 Ella Novak basic 2023-04-05 UK

Input

The DataFrames above are already built for you. One line of input arrives: a whole number, at least 1 — the fewest distinct shows a subscriber must have reached to be given a score.

Task: For subscribers who watched at least that many distinct shows, compute total watch_minutes / number of distinct shows watched, rounded to 2 decimals. Print a dict mapping subscriber name → score, with the subscribers in id order. Anyone below the bar is left out entirely rather than scored and marked.

Sign in to solve this problem

Reading problems is free for everyone — solving them (Run, Submit, and tracking what you've solved) needs an account.

Sign in

Discussion

Sign in to join the discussion — reading is open to everyone.

Loading comments…