기술 통계: 평균, 중앙값, 최솟값, 최댓값, 분산
12강. 기술 통계: 평균, 중앙값, 최솟값, 최댓값, 분산
1. 이번 강의에서 해결할 문제
평균 점수가 같아도 대부분 비슷한 집단과 극단적으로 흩어진 집단은 플레이 경험이 다릅니다. 중심과 퍼짐을 함께 요약해야 합니다.
2. 학습 목표
3. 핵심 개념
평균은 모든 값의 합을 개수로 나눈 중심이고 중앙값은 정렬했을 때 가운데 값이라 극단값에 덜 민감합니다. 분산은 평균에서 떨어진 거리의 제곱 평균이며 표준편차는 원래 단위로 돌아온 퍼짐입니다. pandas var와 std의 기본값은 표본 보정 ddof=1이므로 모집단 전체를 요약할 때는 목적에 맞는 ddof를 명시합니다.
작은 값 네 개로 계산하기
플레이 시간 [10, 10, 10, 50]분을 사용합니다.
- 평균은
(10 + 10 + 10 + 50) / 4 = 20분입니다. - 정렬한 가운데 두 값은 10과 10이므로 중앙값은 10분입니다.
- 최솟값 10, 최댓값 50, 범위는 40분입니다.
- 평균과의 차이는
[-10, -10, -10, 30]입니다. - 차이를 제곱하면
[100, 100, 100, 900]이고 합은 1200입니다. - 네 값 전체가 모집단이면 분산은
1200 / 4 = 300분², 표준편차는 약17.32분입니다. - 더 큰 모집단에서 뽑은 표본이라면
ddof=1로1200 / 3 = 400분², 표준편차는 20분입니다.
50분 하나 때문에 평균은 20분이지만 네 사용자 중 세 명은 10분입니다. 평균만 "전형적인 플레이 시간"이라고 부르면 실제 다수를 제대로 설명하지 못합니다.
통계량과 해석 한계
| 통계량 | 알려 주는 것 | 알려 주지 않는 것 |
|---|---|---|
| 평균 | 값을 모두 합친 중심 | 값이 대칭인지, 대부분이 평균 근처인지 |
| 중앙값 | 순서 기준의 가운데 | 극단값이 얼마나 큰지 |
| 최솟값·최댓값 | 관찰된 범위의 양끝 | 값들이 중간에 어떻게 분포하는지 |
| 분산·표준편차 | 평균 주변의 퍼짐 | 퍼짐의 원인이나 인과 관계 |
표본 수와 수집 기간, 결측·이상치 처리 방법이 다르면 통계량을 바로 비교할 수 없습니다. 수치 옆에 계산 대상과 처리 규칙을 함께 기록합니다.
4. 단계별 실습
1. 예제 파일 작성
실행 환경: 코드 편집기
실행 위치: C:\dev\game-data-lab
실행 전 확인: 기존 파일이 있으면 내용을 덮어쓰지 말고 Git diff로 이번 강의 변경 범위를 확인합니다. 실제 개인정보·API Key·토큰은 사용하지 않습니다.
대상 파일: src/descriptive_stats.py
실행 전 analysis_sessions.csv가 8강 정제 규칙으로 생성된 파일인지 확인합니다. 정제 전·후 파일을 혼동하면 360분 행의 포함 여부가 달라져 같은 코드도 다른 결과를 냅니다.
import pandas as pd
df = pd.read_csv("data/processed/analysis_sessions.csv")
for column in ["play_minutes", "score"]:
values = df[column]
print(f"[{column}]")
print({
"count": int(values.count()),
"mean": round(values.mean(), 2),
"median": round(values.median(), 2),
"min": float(values.min()),
"max": float(values.max()),
"sample_variance": round(values.var(ddof=1), 2),
"sample_std": round(values.std(ddof=1), 2),
})
코드 한 줄씩 이해하기
- 반복문은 같은 통계 계산을
play_minutes,score두 열에 적용합니다. count()는 결측을 제외한 유효 값 수를 반환합니다.mean()과median()은 중심을 서로 다른 방식으로 계산합니다.min()과max()는 관찰 범위를 확인하지만 그 사이 분포를 보여 주지는 않습니다.var(ddof=1)은 분모를n-1로 둔 표본 분산이고 제곱 단위입니다.std(ddof=1)은 분산의 제곱근이라 원래 분·점수 단위로 해석할 수 있습니다.round는 출력 표시를 줄일 뿐 원본 데이터나 내부 계산 정밀도를 변경하지 않습니다.
2. 실행과 결과 확인
실행 환경: Windows PowerShell
실행 위치: C:\dev\game-data-lab
실행 전 확인: Python 코드는 프로젝트의 .venv 인터프리터를 사용하고 입력 파일 경로가 존재하는지 확인합니다.
대상: src/descriptive_stats.py과 이 강의가 만드는 출력
Set-Location C:\dev\game-data-lab
.\.venv\Scripts\python.exe .\src\descriptive_stats.py
예상 결과: 플레이 시간과 점수에 대해 중심, 범위와 표본 분산·표준편차가 출력됩니다.
구체적인 숫자는 정제 규칙에 따라 달라지므로 다음 조건을 함께 확인합니다.
[play_minutes]
count: 정제 후 유효 행 수
mean vs median: 두 값의 차이
max: 360분 이상치가 포함됐는지 판단하는 단서
sample_std: 원래 단위인 분으로 표현된 퍼짐
결과 보고에는 "평균이 올랐다"에서 끝내지 않고 표본 수, 중앙값, 표준편차, 이상치 포함 여부를 함께 적습니다. 기술 통계만으로 특정 게임 모드가 긴 플레이를 원인으로 만들었다고 결론 내릴 수는 없습니다.
5. 분석 또는 모델이 동작하는 이유
평균은 모든 값을 사용해 극단값의 영향을 받고 중앙값은 순서만 사용합니다. 분산은 제곱 단위이므로 실제 해석에는 같은 단위의 표준편차가 더 직관적입니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
다음 강의 연결
중심과 퍼짐을 계산했으므로 13강. 분포와 이상치에서 히스토그램·사분위수로 값이 어디에 몰리고 어떤 관찰이 멀리 떨어졌는지 확인합니다.
기술 통계: 평균, 중앙값, 최솟값, 최댓값, 분산 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.