HOWTO · Python
Python에서 목록의 표준 편차 계산
이 자습서는 Python에서 목록의 표준 편차를 계산하는 방법을 보여줍니다.
이 페이지의 내용
Python 목록의 모집단 표준편차를 계산하려면 statistics.pstdev()를 사용하세요. NumPy의 numpy.std()도 기본적으로 모집단 표준편차를 계산하며, 간단한 수식으로 계산 원리를 확인할 수도 있습니다. 더 큰 모집단의 변동을 추정하기 위해 표본 데이터를 사용하는 경우에는 표본 표준편차를 사용하세요.
표준편차는 값들이 평균에서 일반적으로 얼마나 떨어져 있는지를 나타냅니다. 아래 예제에서는 같은 목록을 사용하므로 표준 라이브러리, NumPy, 직접 계산하는 방법을 바로 비교할 수 있습니다. (statistics.stdev())
statistics.pstdev()로 모집단 표준편차 계산하기
Python 표준 라이브러리의 statistics 모듈은 모집단 표준편차를 계산하는 statistics.pstdev()를 제공합니다. 선택적 인수인 mu를 직접 지정하지 않으면 데이터에서 평균을 계산합니다. 일반적인 경우에는 데이터만 전달하면 함수가 해당 데이터의 평균을 사용합니다.
다음 예제를 실행하세요. 코드와 출력 블록에 표시되는 레이블은 바이트 보존을 위해 영어로 유지됩니다.
import statistics
data = [2, 4, 4, 4, 5, 5, 7, 9]
standard_deviation = statistics.pstdev(data)
print(f"Population standard deviation: {standard_deviation}")
목록에 설명하려는 모집단의 모든 데이터가 들어 있다면 이 방법이 가장 간단합니다. 결과는 부동소수점 숫자이므로 이후 계산에 사용할 때는 숫자 형태로 유지하고, 화면에 표시할 때만 형식을 지정하세요.
NumPy로 모집단 표준편차 계산하기
배열을 다루는 작업에는 numpy.std()를 사용하세요. 기본값인 ddof=0은 제곱 편차의 합을 데이터 개수로 나누므로 모집단 표준편차를 구합니다. 이 예제를 실행하려면 먼저 Python 환경에 NumPy를 설치해야 합니다.
다음 예제를 실행하세요. 코드와 출력 블록에 표시되는 레이블은 바이트 보존을 위해 영어로 유지됩니다.
import numpy as np
data = [2, 4, 4, 4, 5, 5, 7, 9]
standard_deviation = np.std(data)
print(f"Population standard deviation: {standard_deviation}")
목록이 표본이고 표본 표준편차를 구하려면 ddof=1을 설정하세요. 예를 들면 np.std(data, ddof=1)과 같습니다. 이렇게 하면 나누는 값이 데이터 개수에서 데이터 개수보다 하나 작은 값으로 바뀝니다. 다차원 배열에서는 axis로 NumPy가 계산할 차원을 선택할 수 있습니다. 1차원 목록에서는 기본 설정에 따라 목록 전체에 대한 값 하나를 계산합니다.
모집단 표준편차를 직접 계산하기
모집단 표준편차 공식은 세 단계로 이루어집니다. 평균을 구하고, 각 값과 평균의 차이를 제곱한 뒤 그 평균을 구하고, 마지막으로 그 평균의 제곱근을 계산합니다. 데이터 개수로 나누는 것이 모집단 표준편차 계산의 기준입니다. 마지막 제곱근을 구하는 한 가지 명확한 방법은 math.sqrt()를 사용하는 것입니다.
다음 예제를 실행하세요. 코드와 출력 블록에 표시되는 레이블은 바이트 보존을 위해 영어로 유지됩니다.
import math
data = [2, 4, 4, 4, 5, 5, 7, 9]
mean = sum(data) / len(data)
squared_differences = [(value - mean) ** 2 for value in data]
population_variance = sum(squared_differences) / len(data)
standard_deviation = math.sqrt(population_variance)
print(f"Population standard deviation: {standard_deviation}")
이 방법은 공식의 각 단계를 드러내며 표준 라이브러리만 사용합니다. 마지막 제곱근은 population_variance ** 0.5로도 나타낼 수 있습니다. 입력에는 숫자 값이 하나 이상 있어야 합니다. 평균을 구할 때 목록 길이로 나누기 때문에 값이 없는 목록을 계산하기 전에 애플리케이션에서 이를 어떻게 처리할지 정하세요.
모집단 표준편차와 표본 표준편차 중 선택하기
설명하려는 집단의 모든 구성원이 데이터에 포함되어 있다면 모집단 표준편차를 사용하세요. 예를 들어 정해진 한 배치에서 수집한 모든 측정값이 이에 해당합니다. 값들이 표본에 불과하고 더 큰 모집단의 변동을 추정하는 데 사용된다면 표본 표준편차를 사용하세요. 표본 평균은 해당 관측값으로부터 추정되므로 표본 공식에는 자유도 보정이 적용됩니다.
Python에서는 statistics.pstdev(data)가 모집단 표준편차를 계산하고 statistics.stdev(data)가 표본 표준편차를 계산합니다. NumPy는 기본적으로 np.std(data)로 모집단 표준편차를 구하고, 표본 표준편차에는 np.std(data, ddof=1)을 사용합니다. 같은 목록이라도 선택에 따라 결과가 달라질 수 있으므로 함수가 더 짧은지를 기준으로 삼지 말고 데이터가 무엇을 나타내는지에 따라 선택하세요.