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

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

PythonCơ bản14 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ủ đề

matplotlibhistogrambinningentry-ramp

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}.

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