본문 바로가기
Python/통계분석

[누구나 파이썬 통계분석]_Ch02. 1차원 데이터 정리_대푯값

by ssolLEE 2024. 1. 5.
반응형

파이썬으로 간단하게 통계 내용을 공부해보아요. 오늘부터 열심히 달려보겠습니다.

 

포스팅은 타니아이 히로키님의 '누구나 파이썬 통계 분석' 책의 내용을 실습한 것입니다. 

감사합니다.

소스코드와 데이터는 아래의 웹페이지에 공개되어 있습니다. 

- 한빛출판네트워크(https://www.hanbit.co.kr/support/supplement_list.html)

- 깃허브(https://github.com/ghmagazine/python_stat_sample)

 

데이터 불러오기

  • Ch02에 해당하는 데이터를 불러옵니다. 
  • 이때 student number라는 컬럼을 index로 설정합니다. 

  • english 컬럼에서 위에서부터 10번째까지의 점수를 따로 데이터프레임화 하겠습니다. 
import numpy as np

scores = np.array(df['english'])[:10]
scores_df = pd.DataFrame({'scores' : scores}, 
                          index = pd.Index(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
                                           name = 'student'))
scores_df

 

2.1 데이터 중심의 지표, 대푯값

  • 데이터를 대표하는 값으로 평균값, 중앙값, 최빈값을 많이 사용합니다. 
  • 각각은 성격이 다르기 때문에 데이터의 성질에 따라 필요한 것으로 선택합니다. 
  • 평균값은 데이터의 모든 값을 더한 후, 데이터의 갯수로 나누어 줍니다. 
  • 아래 코드는 모두 평균값을 구하는 코드입니다. 
print(sum(scores) / len(scores))
print(np.mean(scores))
print(scores.mean())
>> 55.0
  • 중앙값은 데이터를 크기 순서대로 나열할 때 정확하게 중앙에 위치한 값입니다. 
  • 중앙값은 이상값의 영향을 상대적으로 덜 받기 때문에 데이터의 이상값이 있는 경우에는 대푯값으로 평균값보다는 중앙값을 선택하는 것이 적절합니다. 
  • [1, 2, 3, 5, 20000]이라는 데이터가 있을 경우 평균값과 중앙값을 구해보세요. 그럼 위의 문장이 이해가 될 것입니다. 
    • 데이터의 갯수가 홀수라면 중앙에 있는 값이 바로 중앙값이 됩니다. 
    • 데이터의 갯수가 짝수라면, 중앙에 있는 두 데이터의 평균이 중앙값입니다.
  • 다음 코드로 구현할 수 있습니다. 
# 먼저 크기순으로 정렬하기
sorted_scores = np.sort(scores)
## 방법 1
n = len(sorted_scores)
if n % 2 == 0:
    m0 = sorted_scores[n//2 - 1]
    m1 = sorted_scores[n//2]
    median = (m0 + m1) /2
else:
    median = sorted_scores[(n+1)//2 - 1]
median

## 방법 2
np.median(scores)

## 방법 3
scores_df.median()

>> 56.5
  • 방법 1에서 [] 안에 -1이 들어간 것은, 파이썬 리스트의 인덱스는 0에서 시작하기 때문에 들어간 것입니다. 
  • 최빈값은 데이터에서 가장 많이 나타나는 값입니다.
pd.Series([1, 1, 2, 3, 4, 1, 1]).mode()

>> 0	1
  • [1, 1, 2, 3, 4, 1, 1]이라는 리스트 안에서의 최빈값은 1입니다. 
  • 최빈값은 기본적으로 질적 데이터의 대푯값을 구할 때 사용하는 지표입니다. 
  • 시험 점수와 같은 양적 데이터는 완전히 동일한 점수가 나오는 경우가 많지 않기 때문입니다. 
  • 다만 도수분포표를 도입하면 양적 데이터에서도 최빈값을 자연스럽게 정의할 수 있습니다.(2.4절에서 살펴보겠습니다.)

 

이번 포스팅에서는 대푯값인 평균값, 중앙값, 최빈값을 코드로 구현해보았습니다. 

다음 시간에는 산포도 지표에 대해 알아보겠습니다.

 

오늘도 감사합니다.