Ride Outcome Rate by Rider City
Ops suspects that how rides end differs by city, and wants a rate (not just a count) to compare fairly across cities of different sizes. Cancellations are what started the argument, but the same report gets pointed at whichever outcome is under discussion that week, so the outcome is named when the report is run.
Riders
| id | name | city | signup_date |
|---|---|---|---|
| 1 | Maya Chen | Austin | 2023-01-05 |
| 2 | Noah Patel | Denver | 2023-02-14 |
| 3 | Zara Ahmed | Austin | 2023-03-01 |
| 4 | Leo Kim | Seattle | 2023-04-20 |
| 5 | Ivy Brooks | Denver | 2023-05-11 |
Rides
| id | rider_id | driver_id | distance_km | fare | ride_date | status |
|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 5.2 | 12.5 | 2023-06-01 | completed |
| 2 | 1 | 2 | 3 | 8 | 2023-06-03 | completed |
| 3 | 2 | 2 | 10 | 22 | 2023-06-02 | completed |
| 4 | 3 | 1 | 2.1 | 6.5 | 2023-06-05 | cancelled |
| 5 | 3 | 4 | 4.4 | 11 | 2023-06-06 | completed |
| 6 | 4 | 3 | 7.8 | 18 | 2023-06-04 | completed |
| 7 | 5 | 2 | 1.5 | 5 | 2023-06-07 | cancelled |
| 8 | 2 | 2 | 12.3 | 26.5 | 2023-06-10 | completed |
| 9 | 1 | 1 | 6.6 | 15 | 2023-06-12 | completed |
| 10 | 4 | 3 | 3.3 | 9 | 2023-06-15 | completed |
| 11 | 5 | 2 | 8.8 | 19.5 | 2023-06-18 | completed |
| 12 | 3 | 1 | 2.9 | 7.5 | 2023-06-20 | cancelled |
Input
The DataFrames above are already built for you. One line of input arrives: the ride outcome under discussion, spelled exactly as it appears in the status column.
Task: A city's rate is rides that ended with that outcome / all rides taken by riders who live there, rounded to 2 decimals. Print a dict mapping rider city → that rate. Every city with riders gets an entry, and the denominator is always all of that city's rides — so a city where the outcome never happened scores 0.0 rather than dropping out of the dict.
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