Given an orders DataFrame with order_id, customer_id, and status, return per customer both the total order count and the count of shipped orders (status == 'shipped') — in a single grouped pass (one groupby, no second group-by merged back in). A customer with no shipped orders still appears, with shipped_orders 0.
Columns: customer_id, total_orders, shipped_orders. Any row order.