PROGRESS
5 / 10
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
QUESTION 05 #375
학생들의 시험 점수 분포를 히스토그램으로 시각화하는 프로그램입니다. 빈칸을 채워 데이터를 5개 구간으로 나누는 히스토그램을 완성하세요.
main.py
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
scores = [55, 60, 62, 70, 72, 75, 78, 80, 82, 85, 88, 90, 92, 95, 98]
# 히스토그램을 그립니다. bins는 구간(막대) 수입니다.
plt.(scores, bins=)
plt.title('Score Distribution')
plt.show()
print("학생 수:", len(scores))
print("평균 점수:", sum(scores) // len(scores))
HINT
힌트: 첫 번째 빈칸은 히스토그램(histogram)의 약어인 hist이며, 두 번째 빈칸은 데이터를 나눌 구간 수(5)입니다.
실행 결과 예시
학생 수: 15 평균 점수: 78
INTERACTIVE SHELL
Shift + Enter 로 즉시 실행
히스토그램 (Histogram)
히스토그램은 데이터의 분포(어디에 많이 모여 있는지)를 보여주는 그래프입니다.
기본 문법
plt.hist(데이터, bins=구간수)
히스토그램 vs 막대 그래프
| 비교 | 히스토그램 (hist) | 막대 그래프 (bar) |
|---|---|---|
| x축 | 연속된 숫자 구간 | 독립적인 항목(카테고리) |
| 막대 간격 | 붙어 있음 | 떨어져 있음 |
| 용도 | 데이터 분포 확인 | 항목별 비교 |
| 예시 | 점수 분포, 나이 분포 | 과일별 판매량 |
bins(구간 수)의 역할
같은 데이터도 bins에 따라 그래프가 달라집니다:
bins=3 (3구간): bins=5 (5구간):
■■■■■ ■■■
■■■■■ ■■■■ ■■■ ■■■
■■■■■ ■■■■ ■■ ■■■ ■■■ ■■ ■■■ ■■
+-----+----+--+ +--+--+--+--+--+
55 70 85 100 55 64 73 82 91 100
| bins | 구간 폭 | 특징 |
|---|---|---|
| 너무 적음 (3) | 넓음 | 세부 분포가 안 보임 |
| 적절함 (5~10) | 보통 | 분포 파악에 좋음 |
| 너무 많음 (30) | 좁음 | 들쭉날쭉해서 패턴 파악 어려움 |
동작 과정 (bins=5)
scores = [55, 60, 62, 70, 72, 75, 78, 80, 82, 85, 88, 90, 92, 95, 98]
| 구간 | 범위 | 해당 학생 수 |
|---|---|---|
| 1구간 | 55 ~ 63.6 | 3명 (55, 60, 62) |
| 2구간 | 63.6 ~ 72.2 | 2명 (70, 72) |
| 3구간 | 72.2 ~ 80.8 | 3명 (75, 78, 80) |
| 4구간 | 80.8 ~ 89.4 | 3명 (82, 85, 88) |
| 5구간 | 89.4 ~ 98.0 | 4명 (90, 92, 95, 98) |
히스토그램 꾸미기
plt.hist(scores, bins=5,
color='skyblue', # 막대 색상
edgecolor='black', # 테두리 색상
alpha=0.8) # 투명도
💡 핵심: 히스토그램은 데이터의 분포를 파악하는 그래프이며,
bins로 구간 수를 조절합니다.