Tổng doanh thu theo thành phố bằng groupby
Bảng doanh thu thô của một sàn thương mại điện tử có nhiều dòng cho cùng một thành phố:
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: python-basics, pandas-dataframe-intro.
Nội dung đề bài
Mô tả bài toán
Bảng doanh thu thô của một sàn thương mại điện tử có nhiều dòng cho cùng một thành phố: mỗi dòng là một đơn hàng. Câu hỏi quản trị đặt ra rất đơn giản - mỗi thành phố thu về bao nhiêu - nhưng nếu cộng tay bằng vòng lặp thì chỉ cần vài trăm dòng là đã rối. pandas gom nhóm bằng groupby và tổng hợp trong một biểu thức.
Yêu cầu
Viết hàm revenue_by_city(rows) nhận danh sách các đơn hàng và trả về danh sách tổng doanh thu của từng thành phố, sắp xếp theo tên thành phố tăng dần.
Quy ước nộp bài
Nộp hàm revenue_by_city trong solution.py. Hệ thống gọi hàm trực tiếp và so cấu trúc trả về với kỳ vọng (số so với sai số 1e-6); không đọc dữ liệu từ stdin, không in ra stdout và không ghi tệp.
Input
- rows: danh sách dict, mỗi dict có khoá "city" (chuỗi tên thành phố) và "revenue"
(số tiền của đơn đó). Danh sách có từ 1 đến 200 dòng.
Output
Danh sách dict hai khoá "city" và "revenue", mỗi thành phố đúng một dòng, giá trị revenue là tổng của mọi dòng cùng thành phố, sắp theo city tăng dần.
Ràng buộc
- Dựng bảng bằng pd.DataFrame(rows) rồi gom nhóm bằng pandas, không tự cộng bằng dict Python.
- Giá trị trả về phải là danh sách dict (JSON-friendly), không phải DataFrame hay Series.
- Sắp xếp theo chuỗi phân biệt hoa thường.
Ví dụ 1
Input
revenue_by_city(rows=[{"city": "Ha Noi", "revenue": 10}, {"city": "Da Nang", "revenue": 30}, {"city": "Ha Noi", "revenue": 40}])
Output
[{"city": "Da Nang", "revenue": 30}, {"city": "Ha Noi", "revenue": 50}]
Ví dụ 2
Input
revenue_by_city(rows=[{"city": "Hue", "revenue": 2.5}, {"city": "Hue", "revenue": 2.5}])
Output
[{"city": "Hue", "revenue": 5.0}]
Giải thích
Với rows = [{"city": "Ha Noi", "revenue": 10}, {"city": "Da Nang", "revenue": 30}, {"city": "Ha Noi", "revenue": 40}] thì kết quả là [{"city": "Da Nang", "revenue": 30}, {"city": "Ha Noi", "revenue": 50}]. Hà Nội có hai đơn 10 và 40 nên cộng lại thành 50; Đà Nẵng chỉ có một đơn 30.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
