python-243Đọc toàn bộ đề miễn phí

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ố:

PythonCơ bản10 phút

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ủ đề

pandasgroupbyentry-ramp

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.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.

Nhóm Zalo