Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 statistics 모듈 핵심 통계 함수 완벽 정리

파이썬 표준 라이브러리의 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() 함수는 데이터의 변동성 또는 흩어진 정도를 나타냅니다. 분산이 크다는 것은 데이터가 넓게 퍼져 있다는 의미이며, 분산이 작다면 데이터가 중심값 근처에 밀집해 있다는 뜻입니다.

분산을 직접 구하는 절차는 다음과 같습니다.

  1. 샘플의 모든 요소에 대한 산술 평균을 구합니다.
  2. 각 요소와 평균의 차이를 제곱한 뒤 모두 더합니다.
  3. 그 합을 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 모듈만 익혀두면 별도의 외부 라이브러리 없이 파이썬 기본 기능만으로 평균, 중앙값, 최빈값, 분산, 표준 편차 같은 기초 통계량을 빠르게 계산할 수 있습니다. 간단한 데이터 분석이나 학습용 프로젝트에서 특히 유용하니 적극적으로 활용해 보시기 바랍니다.