데이터 분석 업무를 하다 보면 보고서 작성이나 지표 모니터링을 위해 기술 통계를 자주 사용하게 됩니다. 그 중에서도 가장 기초적이고 자주 쓰이는 지표가 바로 **평균값(Mean), 중앙값(Median), 최빈값(Mode)**입니다.
이번 글에서는 실제 데이터를 바탕으로, 각 지표가 어떤 상황에 유용한지 그리고 SQL 쿼리를 어떻게 작성해야 하는지를 예시와 함께 상세히 설명하겠습니다.
📂 분석 데이터 소개: 유저 구매 내역 테이블
예시 테이블명: user_purchases
user_id | purchase_amount | purchase_date |
---|---|---|
u001 | 10000 | 2024-01-01 |
u002 | 5000 | 2024-01-02 |
u003 | 15000 | 2024-01-03 |
u004 | 1000000 | 2024-01-04 |
u005 | 7000 | 2024-01-05 |
위와 같은 구매 금액 데이터를 가지고 실제로 평균값, 중앙값, 최빈값을 어떻게 계산하고 해석하는지 살펴보겠습니다.
📊 평균값 (Mean)
✅ 개념
- 전체 데이터를 더한 후 개수로 나눈 값
- 이상치에 민감하여 실제 중심 경향을 왜곡할 수 있음
✅ 실무 사용 예시
- 전체 사용자의 평균 구매 금액 계산
- 월별 평균 구매 금액 추이 분석 등
✅ SQL 예제 (월별 평균 구매금액)
SELECT
FORMAT_DATE('%Y-%m', purchase_date) AS purchase_month,
ROUND(AVG(purchase_amount), 0) AS avg_purchase_amount
FROM
user_purchases
GROUP BY
purchase_month
ORDER BY
purchase_month;
🧭 중앙값 (Median)
✅ 개념
- 데이터를 정렬했을 때 중간에 위치한 값
- 이상치에 강건해서, 왜곡 없는 중심값으로 사용 가능
✅ 실무 사용 예시
- 사용자 연봉, 집값, 구매금액처럼 편향된 분포의 중심값 확인할 때 유용
✅ SQL 예제 (BigQuery 기준, 근사치 사용)
SELECT
FORMAT_DATE('%Y-%m', purchase_date) AS purchase_month,
APPROX_QUANTILES(purchase_amount, 2)[OFFSET(1)] AS median_purchase_amount
FROM
user_purchases
GROUP BY
purchase_month
ORDER BY
purchase_month;
APPROX_QUANTILES(col, 2)
는 [최솟값, 중앙값, 최댓값] 3개를 반환하며,OFFSET(1)
이 중앙값입니다.
🧮 최빈값 (Mode)
✅ 개념
- 데이터 중 가장 많이 등장한 값
- 범주형 데이터 분석에 유리 (ex. 요일, 카테고리 등)
✅ 실무 사용 예시
- 사용자가 가장 많이 접속한 요일
- 가장 많이 팔린 상품 카테고리
✅ SQL 예제 (가장 많이 결제된 금액 구하기)
SELECT
purchase_amount,
COUNT(*) AS cnt
FROM
user_purchases
GROUP BY
purchase_amount
ORDER BY
cnt DESC
LIMIT 1;
동일 횟수로 여러 최빈값이 존재할 경우
LIMIT 1
로 하나만 가져오게 됩니다. 전부 보려면RANK()
나DENSE_RANK()
를 활용하세요.
✅ 요약: 어떤 상황에 어떤 지표를 써야 할까?
지표 | 사용 추천 상황 | 특징 |
평균값 | 이상치가 없고 데이터 분포가 고름 | 가장 일반적, 빠르게 계산 가능 |
중앙값 | 이상치가 많거나 분포가 비대칭 | 이상치에 강건, 안정적인 중심값 |
최빈값 | 범주형 데이터 또는 반복값 파악 | 가장 자주 등장한 값 식별 |
📌 결론
실제 업무에서는 이 세 가지 지표를 적절히 혼합해서 쓰는 경우가 많습니다. 예를 들어 평균 구매금액과 중앙값을 함께 비교하면 이상치의 영향을 빠르게 파악할 수 있고, 최빈값으로는 가장 일반적인 유저 행동을 식별할 수 있죠.
이 글이 여러분의 실무 데이터 분석에 실질적인 도움이 되길 바랍니다!
답글 남기기