KAIST Junior · 2026년 1학기 · 데이터 2차시

데이터 2차시 과제 제출 준비

까다로운 데이터 요리하기 — groupby · loc · sort_values · 히스토그램 · 제출 마감: 2026년 5월 3일(일) 23:59

📌 이 문서의 용도
이번 차시 데이터 과제는 서울시 자치구별 버스 승객수 데이터(bus_merged) 를 활용하는 3가지. 이 문서는 실제 데이터를 기반으로 예상 정답 값 을 미리 계산해 정리한 준비용 자료입니다. 노트북에서 결과 숫자를 확인할 때 여기 값과 일치하면 OK.

1. 과제 파일 체크리스트

2. 과제 1. 자치구별 평균 / 최대 버스 승객 수

1-1. 자치구별 평균 + 강남구의 평균 승객 수

코드:

gu_mean = bus_merged.groupby('자치구_명칭')['버스_승객_수'].mean()
print(f'강남구 평균: {gu_mean["강남구"]:.2f}명')

예상 출력: 강남구 평균 ≈ 9,741.82명

참고 — 자치구 수: 서울 25개 자치구 전체 평균이 계산되며, 강남구 행정동 22개 기준 평균.

1-2. 자치구별 최대 + 가장 많았던 자치구

코드:

gu_max = bus_merged.groupby('자치구_명칭')['버스_승객_수'].max()
print(gu_max.sort_values(ascending=False).head())
print(f'최대 자치구: {gu_max.idxmax()} ({gu_max.max()}명)')

예상 출력 (Top 5):

순위자치구최대 승객수대표 행정동
1마포구54,011명서교동
2종로구46,764명종로1·2·3·4가동
3영등포구33,656명영등포동
4서대문구32,106명신촌동
5용산구29,401명이태원동

답: 마포구 (54,011명)

3. 과제 2. loc + sort_values 로 조건 추출

2-1. 강남구 OR 승객수 30,000 이상 행 추출 (loc 사용)

코드:

mask = (bus_merged['자치구_명칭'] == '강남구') | (bus_merged['버스_승객_수'] >= 30000)
result = bus_merged.loc[mask, ['행정동_명칭', '버스_승객_수']]
print(result)
⚠️ 흔한 실수: "이거나" = | (OR). &(AND) 를 쓰면 "강남구이면서 30,000 이상"으로 바뀌어 결과가 크게 달라진다. 그리고 각 조건은 반드시 괄호로 감싸야 한다.

예상 출력: 총 26개 행

2-2. sort_values 다중 정렬 (자치구 가나다 → 행정동 가나다)

코드:

result = bus_merged.sort_values(by=['자치구_명칭', '행정동_명칭'])
print(result[['자치구_명칭', '행정동_명칭', '버스_승객_수']].head(3))

예상 출력 (첫 3행):

자치구행정동승객수
강남구개포1동3,461명
강남구개포2동5,977명
강남구개포3동2,353명

답: 개포1동 · 3,461명

가나다순에서 자치구는 '강'으로 시작하는 강남구, 그 안의 행정동은 개포1동 이 첫 번째.

4. 과제 3. 영등포구 히스토그램 + 분포 분석

3-1. 영등포구 분포의 특징 서술

기초 통계:

지표
행정동 수18개
평균 (Mean)8,132명
중앙값 (Median)4,873명
표준편차 (Std)8,847명
최솟값 / 최댓값2,604명 / 33,656명

분포의 특징 (서술 답안 예시):

① 극단적인 Right Skew (오른쪽 긴 꼬리) 분포
  • 18개 행정동 중 16개가 약 2,600 ~ 12,000명 구간 에 몰려 있다.
  • 반면 2개 행정동(여의동 29,803명, 영등포동 33,656명) 이 12,000 ~ 29,000 구간을 완전히 비워두고 훨씬 오른쪽에 떨어져 있다.
  • 전형적인 Right skew 형태. 평균(8,132) > 중앙값(4,873) 관계가 성립.
② 극단값(Outlier) 영향
  • 평균이 중앙값의 약 1.7배. 두 큰 값이 평균을 끌어올린 결과.
  • 표준편차 8,847명은 평균(8,132)과 거의 같은 크기 → 분포가 매우 흩어져 있음.
  • "영등포구 평균 버스 승객수 8,132명" 이라고만 하면 실제 대부분 행정동(5,000 명 내외)을 오해하게 만드는 숫자.
③ 왜 이런 분포가 나왔을까? (해석)
  • 영등포구는 영등포역·여의도·문래 같은 상업/업무 지구(유동인구 많음)와 도림·양평·대림 같은 주거 지구(상대적 적음)가 공존.
  • 광복절(2025-08-15) 데이터라 평일 출퇴근 수요는 낮지만 상업지구 나들이 수요가 특정 행정동에 집중.
  • 결론: 중심값(평균·중앙값)과 흩어짐(표준편차)을 함께 봐야 분포 전체를 이해할 수 있다. Right skew 분포에서는 중앙값이 대표성이 더 높다.

5. 제출 문서 구조 예시

📝 워크북 권장 구조
[표지]
- 과정명, 이름, 학교

[과제 1]
- 1-1 코드 캡처 + 출력 캡처 + 강남구 평균 답
- 1-2 코드 캡처 + Top 5 출력 캡처 + 최대 자치구 답

[과제 2]
- 2-1 코드 캡처 + 결과 일부 캡처 (26행 중 상위 10행)
- 2-2 코드 캡처 + 첫 행 결과 캡처 + 답 (개포1동)

[과제 3]
- 영등포구 추출 코드
- 평균/중앙값 숫자 출력
- 히스토그램 이미지 (mean=빨강 점선, median=주황 실선)
- 3-1 분포 특징 서술 (③ 문단 구조 참고)

6. 제출 전 최종 체크리스트

Junior KAIST 2026 1학기 · 데이터 2차시 과제 제출 준비 자료