MediumPython
Group and aggregate: revenue by city
Filter to delivered orders, group by city and use named aggregation in agg, so each output column gets a clear name: orders, revenue and average order. Then flag what the totals hide: sum and mean quietly ignore NaN, so Delhi counts 2 orders yet has only one amount. Always check for missing values before you rely on a total.
summary = (orders[orders["status"] == "delivered"]
.groupby("city", as_index=False)
.agg(orders=("order_id", "count"),
revenue=("amount", "sum"),
avg_order=("amount", "mean")))
# Delhi: orders 2, revenue 3398.0, avg_order 3398.0, because order 1008 has no amountSay your answer out loud first. Then check ours.