Biểu đồ tần suất: đếm số phần tử trong từng bin
Biểu đồ tần suất chia miền giá trị thành các khoảng bằng nhau (bin) rồi đếm xem mỗi
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, python-lists.
Nội dung đề bài
Mô tả bài toán
Biểu đồ tần suất chia miền giá trị thành các khoảng bằng nhau (bin) rồi đếm xem mỗi khoảng chứa bao nhiêu phần tử. Đây là bước đầu tiên khi muốn biết dữ liệu tập trung ở đâu, và cũng là ví dụ rõ nhất cho việc biên của bin ảnh hưởng thế nào tới kết quả đếm.
Yêu cầu
Viết hàm histogram_counts(values, bins):
- Nếu values rỗng thì ném ValueError.
- Tạo hình vẽ bằng plt.subplots() và gọi ax.hist(values, bins=bins) để vẽ; đặt
tiêu đề và nhãn cho hai trục.
- Đọc bộ ba giá trị mà ax.hist trả về — số đếm từng bin, các biên bin và danh sách
hình chữ nhật — rồi trả về dict: {"counts": [...], "total": tổng số đếm, "edge_min": biên nhỏ nhất, "edge_max": biên lớn nhất}.
Quy ước nộp bài
Nộp hàm histogram_counts trong solution.py. Hệ thống gọi hàm trực tiếp theo tên đối số, chạy ở chế độ hình vẽ không cửa sổ, so giá trị trả về với sai số 1e-6; không đọc dữ liệu từ stdin và không in ra stdout.
Input
- values: danh sách từ 1 đến 20 số nguyên hoặc số thực.
- bins: số khoảng chia, từ 1 đến 10.
Output
- counts: danh sách số nguyên, dài đúng bins, phần tử thứ i là số giá trị rơi vào
bin thứ i.
- total: tổng của counts (bằng số phần tử của values).
- edge_min, edge_max: biên trái của bin đầu và biên phải của bin cuối.
Ràng buộc
- Danh sách rỗng phải ném ValueError.
- Bin được chia đều trên đoạn [min(values), max(values)] theo mặc định của
ax.hist, không phải trên đoạn [0, max(values)].
- Không trả về mảng NumPy hay Axes; chỉ trả về dict gồm số và danh sách số.
Ví dụ 1
Input
histogram_counts(values=[1, 2, 2, 3], bins=2)
Output
{"counts": [1, 3], "total": 4, "edge_min": 1.0, "edge_max": 3.0}
Ví dụ 2
Input
histogram_counts(values=[0, 1, 2, 3], bins=2)
Output
{"counts": [2, 2], "total": 4, "edge_min": 0.0, "edge_max": 3.0}
Giải thích
Với values = [1, 2, 2, 3] và bins = 2, miền giá trị là [1, 3] nên hai bin là [1, 2) và [2, 3] (bin cuối chứa cả biên phải). Kết quả là {"counts": [1, 3], "total": 4, "edge_min": 1.0, "edge_max": 3.0}.
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.
