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

파이썬에서 외부 라이브러리 없이 평균, 중앙값, 최빈값 구하기

평균(Mean), 중앙값(Median), 최빈값(Mode)은 데이터 분석에서 가장 자주 사용되는 통계 함수입니다. 보통은 statisticsnumpy 같은 파이썬 라이브러리를 활용하지만, 이 글에서는 외부 라이브러리 없이 순수 파이썬 기본 문법만으로 세 가지 값을 직접 계산하는 방법을 알아보겠습니다.

평균(Mean) 구하기

평균은 숫자 목록의 대푯값 중 하나로, 모든 숫자의 합을 숫자의 개수로 나눈 값입니다. 아래 예제에서는 내장 함수인 sum()으로 숫자의 총합을 구하고, len()으로 리스트의 요소 개수를 구해 나누는 방식으로 평균을 계산합니다.

예제 코드

num_list = [21, 11, 19, 3, 11, 5]
# 숫자들의 합 구하기
num_sum = sum(num_list)
# 합을 리스트의 길이로 나누기
mean = num_sum / len(num_list)
print(num_list)
print("위 숫자 목록의 평균은: " + str(round(mean, 2)))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

[21, 11, 19, 3, 11, 5]
위 숫자 목록의 평균은: 11.67

중앙값(Median) 구하기

중앙값은 정렬된 숫자 목록에서 가장 가운데에 위치한 값입니다. 목록의 숫자 개수가 홀수라면 오름차순으로 정렬한 뒤 정확히 가운데 있는 값을 선택하면 됩니다. 개수가 짝수라면 가운데 두 값을 선택해 그 평균을 중앙값으로 사용합니다.

예제 코드

num_list = [21, 13, 19, 3, 11, 5]
# 리스트 정렬
num_list.sort()
# 중앙값 위치 찾기
if len(num_list) % 2 == 0:
    first_median = num_list[len(num_list) // 2]
    second_median = num_list[len(num_list) // 2 - 1]
    median = (first_median + second_median) / 2
else:
    median = num_list[len(num_list) // 2]
print(num_list)
print("위 숫자 목록의 중앙값은: " + str(median))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

[3, 5, 11, 13, 19, 21]
위 숫자 목록의 중앙값은: 12.0

최빈값(Mode) 구하기

최빈값은 목록에서 가장 자주 등장하는 숫자를 의미합니다. 각 숫자의 등장 빈도를 계산한 뒤, 빈도가 가장 높은 숫자를 선택하는 방식으로 구할 수 있습니다. 여기서는 표준 라이브러리의 collections.Counter를 활용해 빈도를 손쉽게 집계합니다.

예제 코드

import collections
# 최빈값을 계산할 요소 목록
num_list = [21, 13, 19, 13, 19, 13]

# 리스트 출력
print(num_list)

# 각 항목의 빈도 계산
data = collections.Counter(num_list)
data_list = dict(data)

# 빈도와 함께 항목 출력
print(data_list)

# 가장 높은 빈도 찾기
max_value = max(list(data.values()))
mode_val = [num for num, freq in data_list.items() if freq == max_value]
if len(mode_val) == len(num_list):
    print("목록에 최빈값이 없습니다")
else:
    print("목록의 최빈값은 : " + ', '.join(map(str, mode_val)))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

[21, 13, 19, 13, 19, 13]
{21: 1, 13: 3, 19: 2}
목록의 최빈값은 : 13

마무리

이처럼 sum(), len(), sort(), collections.Counter 같은 파이썬의 기본 기능만 활용해도 평균, 중앙값, 최빈값을 충분히 계산할 수 있습니다. 작은 데이터셋이나 학습 목적이라면 외부 라이브러리 없이 직접 구현해 보는 것이 통계 개념과 파이썬 문법을 동시에 익히는 좋은 연습이 됩니다.