

0 / 2 embers
0 / 3000 xp
click for more info
Complete a lesson to start your streak
click for more info
Difficulty: 5
click for more info
Not enough gems
Cost: 6 gems
1: Event Data
incomplete
2: Event Structure
incomplete
3: Event Counting
incomplete
4: Resample
incomplete
5: Resample Aggregations
incomplete
6: Active Users
incomplete
7: Time Patterns
incomplete
8: Funnel Metrics
incomplete
9: Conversion Rates
incomplete
10: Funnel Drop-Offs
incomplete
11: Ordered Funnels
incomplete
12: Cohorts
incomplete
13: Cohort Retention
incomplete
14: Rolling Metrics
incomplete
15: Growth Rates
incomplete
Back
ctrl+,
Next
ctrl+.
This lesson's interactive features are locked, please to keep using them
A funnel tracks users through a multi-step process. At each step, some users continue and some leave. Measuring where users drop off tells you where to focus your improvement efforts.
For example, on Boot.dev, the "conversion" funnel is:
Not every user completes every step. The percentage who make it from one step to the next is the conversion rate... more on that soon.
A simple loop and the pd.Series constructor can turn a few related counts into one labeled result:
channels = ["search", "social", "email"]
visitor_counts = {}
for channel in channels:
visitors = visits[visits["source"] == channel]["visitor_id"].nunique()
visitor_counts[channel] = visitors
traffic_series = pd.Series(visitor_counts)
print(traffic_series)
search 5000
social 1200
email 800
dtype: int64
SnackStack's growth team wants to know where users fall out of the onboarding funnel: bring a device online, send a temperature reading, start a recipe, then purchase a recipe pack.
Complete the count_users_at_each_step function. It accepts an events DataFrame with event_name and user_id columns and an ordered funnel_steps list.