
Build the four-panel before/after exhibit for the ops review — matplotlib as the layout engine, seaborn drawing into it.
Your Zesto late-orders investigation landed: Old City's problem was rider supply, and twenty riders were added on March 1. Leadership wants the story on one slide. You'll lay out a 2×2 figure with plt.subplots, author each panel as a function, and draw seaborn onto specific axes — the daily trend with the fix date marked, late rate by zone before vs after, the Old City distribution shift, and the March heatmap showing the dinner peak that's still there. Then you tighten the layout and write the speaker notes.
Seven steps, ~4 hours. What you'll practice: plt.subplots(2, 2), fig.suptitle, ax.axvline, panel titles and shared palettes, sns.barplot/histplot/heatmap with ax=, and fig.tight_layout.
You'll practice
The exhibit needs both months in one table with the intervention encoded. Load deliveries_feb.csv and deliveries_mar.csv (parse the two timestamp columns), give February a period column of 'before' and March 'after', and pd.concat them into orders. Recompute delivery_minutes, is_late and hour exactly as in the investigation. Then set orders_before and orders_after — the row count of each period, as plain ints.
Done when: orders holds both months and the two counts confirm nothing was dropped in the concat.
order_id · city (Mumbai, Bengaluru, Pune, Jaipur) · zone (3 per city) · cuisine · order_placed_at / delivered_at (timestamps) · promised_minutes (30 or 45) · distance_km · order_value (₹) · rider_id
An order is late when it took longer than promised_minutes. February is before the rider fix; March is after (shipped March 1).