파이썬 표준 라이브러리의 statistics 모듈은 숫자 데이터를 바탕으로 다양한 통계 공식을 손쉽게 계산할 수 있는 함수들을 제공합니다. 일반적인 int, float 타입뿐만 아니라 Fraction(분수)과 Decimal(십진수) 타입까지 지원하기 때문에 정밀한 수치 계산이 필요한 상황에서도 유용하게 활용할 수 있습니다.
이 글에서 소개하는 함수들을 사용하려면 먼저 아래와 같이 모듈을 임포트해야 합니다.
>>> from statistics import *
1. 중심 경향성을 구하는 함수
중심 경향성(central tendency)은 데이터가 어떤 값 중심에 몰려 있는지를 보여주는 지표입니다. statistics 모듈에서는 mean(), harmonic_mean(), median(), mode() 함수를 통해 확인할 수 있습니다.
mean() – 산술 평균
mean() 함수는 시퀀스나 이터레이터 형태의 데이터에 대한 산술 평균, 즉 모든 값을 더한 뒤 개수로 나눈 값을 계산합니다.
>>> from statistics import mean
>>> numbers = [12, 34, 21, 7, 56]
>>> mean(numbers)
26
데이터에 Decimal 객체나 Fraction 객체가 포함되어 있어도 문제없이 동작합니다.
>>> from decimal import Decimal
>>> numbers = [12, 34, 21, Decimal('7'), 56]
>>> mean(numbers)
Decimal('26')
>>> from fractions import Fraction
>>> numbers = [12, 20.55, Fraction(4, 5), 21, 56]
>>> mean(numbers)
22.07
harmonic_mean() – 조화 평균
조화 평균(harmonic mean)은 데이터 요소들의 역수를 산술 평균한 후, 그 결과의 역수를 다시 구하는 방식으로 계산됩니다. 예를 들어 [1, 2, 3, 4, 5]의 조화 평균은 다음 절차로 구할 수 있습니다.
- 역수 목록: 1/1, 1/2, 1/3, 1/4, 1/5 → 합계 약 2.2833
- 역수들의 평균: 2.2833 ÷ 5 ≈ 0.4567
- 조화 평균: 1 ÷ 0.4567 ≈ 2.1898
>>> harmonic_mean([1, 2, 3, 4, 5])
2.18978102189781
median() – 중앙값
median() 함수는 데이터를 오름차순으로 자동 정렬한 뒤 가운데 위치한 값을 반환합니다. 데이터 개수가 홀수면 정확히 가운데 값이 중앙값이 되고, 짝수라면 가운데 두 값의 평균이 중앙값이 됩니다.
>>> median([2, 5, 4, 8, 6])
5
>>> median([11, 33, 66, 55, 88, 22])
44.0
mode() – 최빈값
mode() 함수는 샘플 데이터에서 가장 자주 등장하는 값을 반환합니다. 숫자 데이터뿐만 아니라 문자열처럼 숫자가 아닌 데이터에도 적용할 수 있습니다.
>>> mode((4, 7, 8, 4, 9, 7, 12, 4, 8))
4
>>> mode(['cc', 'aa', 'dd', 'cc', 'ff', 'cc'])
'cc'
2. 산포도(흩어짐 정도)를 구하는 함수
산포(dispersion)는 데이터가 중심값으로부터 얼마나 흩어져 있는지를 측정하는 지표입니다. statistics 모듈에서는 variance()와 stdev() 함수로 확인할 수 있습니다.
variance() – 분산
variance() 함수는 데이터의 변동성 또는 흩어진 정도를 나타냅니다. 분산이 크다는 것은 데이터가 넓게 퍼져 있다는 의미이며, 분산이 작다면 데이터가 중심값 근처에 밀집해 있다는 뜻입니다.
분산을 직접 구하는 절차는 다음과 같습니다.
- 샘플의 모든 요소에 대한 산술 평균을 구합니다.
- 각 요소와 평균의 차이를 제곱한 뒤 모두 더합니다.
- 그 합을 n-1(표본 크기가 n일 때)로 나누면 분산이 됩니다.
이를 수식으로 표현하면 다음과 같습니다.
s² = Σ(xᵢ − x̄)² / (n − 1)
다행히 variance() 함수가 위 과정을 자동으로 계산해 줍니다.
>>> num = [4, 9, 2, 11, 5, 22, 90, 32, 56, 70]
>>> variance(num)
981.2111111111111
stdev() – 표준 편차
stdev() 함수는 샘플 데이터의 표준 편차를 반환합니다. 표준 편차는 분산의 제곱근으로, 원래 데이터와 같은 단위를 사용하기 때문에 분산보다 해석이 훨씬 직관적입니다.
>>> num = [4, 9, 2, 11, 5, 22, 90, 32, 56, 70]
>>> stdev(num)
31.324289474960338
마무리
statistics 모듈만 익혀두면 별도의 외부 라이브러리 없이 파이썬 기본 기능만으로 평균, 중앙값, 최빈값, 분산, 표준 편차 같은 기초 통계량을 빠르게 계산할 수 있습니다. 간단한 데이터 분석이나 학습용 프로젝트에서 특히 유용하니 적극적으로 활용해 보시기 바랍니다.