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

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

소스코드와 데이터는 아래의 웹페이지에 공개되어 있습니다.
- 한빛출판네트워크(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절에서 살펴보겠습니다.)
이번 포스팅에서는 대푯값인 평균값, 중앙값, 최빈값을 코드로 구현해보았습니다.
다음 시간에는 산포도 지표에 대해 알아보겠습니다.
오늘도 감사합니다.
'Python > 통계분석' 카테고리의 다른 글
| [누구나 파이썬 통계분석]_Ch02.1차원 데이터 정리_시각화 (1) | 2024.01.13 |
|---|---|
| [누구나 파이썬 통계분석]_Ch02.1차원 데이터 정리_도수분포표 (0) | 2024.01.11 |
| [누구나 파이썬 통계분석]_Ch02.1차원 데이터 정리_정규화 (1) | 2024.01.08 |
| [누구나 파이썬 통계분석]_Ch02.1차원 데이터 정리_산포도 지표 (1) | 2024.01.08 |
| [누구나 파이썬 통계분석]_Ch01. 데이터_변수에 대하여 (2) | 2024.01.03 |