Python으로 익히는 딥러닝

Python) 기초 통계에 필요한 함수_numpy패키지 및 중심성향을 분석하는 통계방법

서_네 2018. 11. 28. 11:00

클래스를 만들기에 앞서 클래스에 생성에 필요한 함수에 대해 간략하게 알아보도록 하겠습니다.


▶기초 통계에 필요한 함수 생성


1. 중심 성향을 분석하는 통계방법

- 평균값, 중앙값, 최빈값, 분산, 표준편차, 범위, 사분위수


2. 그래프

- 막대 그래프, 원형 그래프, plot 그래프, 라인 그래프, 사분위수 그래프


이때, 중심 성향을 분석하고 싶다면 numpy모듈을 활용해야한다.


numpy 모듈이란 ?

: numpy는 과학 계산을 위한 라이브러리로서 다차원 배열을 처리하는데 필요한 여러 유용한 기능을 제공하고 있다.


① 평균값


문제1. A,B그룹의 평균을 구하시오


age_A = [28, 27, 24, 27, 28, 28, 26, 27, 28, 26, 26, 27, 25, 27, 26, 25, 27, 29, 25, 28, 26, 25, 28, 25, 24,27,32,28,28,24]

age_B = [26, 27, 27, 27, 26, 27, 28, 31, 28, 27, 25, 26, 23, 26, 26, 25, 24, 26, 31, 28, 30, 33, 27, 32, 27, 26,240]


import numpy as np #numpy모듈 불러오기

print(np.mean(age_7)) 

print(np.mean(age_8)) 


>>  결과 : 

26.7

35.1


② 중앙값


문제2. A,B그룹의 중앙값을 구하시오


age_A = [28, 27, 24, 27, 28, 28, 26, 27, 28, 26, 26, 27, 25, 27, 26, 25, 27, 29, 25, 28, 26, 25, 28, 25, 24,27,32,28,28,24]

age_B = [26, 27, 27, 27, 26, 27, 28, 31, 28, 27, 25, 26, 23, 26, 26, 25, 24, 26, 31, 28, 30, 33, 27, 32, 27, 26,240]


print(np.median(age_A))

print(np.median(age_B))


>> 결과 : 

27

27


★ 평균값 뿐만 아니라 중앙값도 필요한 이유는 ?

평균값은 이상치 데이터(잡음 데이터) 민감하다

평균값만 가지고 데이터를 대표하기에는 정보가 부족하기 때문에 평균값과 중앙값도 함께 고려하여 데이터를 분석한다.



③최빈값

* 최빈값이 필요한 이유는 ?

C그룹의 데이터 값이 다음과 같다고 가정할 때, 

age_C = [2,2,2,2,2,2,2,2,2,2,52,52,52,52,52,52,52,52,52,52]

평균값은 27, 중앙값도 27의 값을 가진다.


평균값과 중앙값은 27이지만 실제로 C그룹의 데이터 값은 2와 57로 이루어져 있으므로 평균값과 중앙값만으로 C그룹의 값을 예측하기는 어렵다. 따라서, 최빈값도 함께 고려하여 데이터를 분석한다.


문제3. C그룹의 최빈값을 구하시오


from collections import Counter as cc

cnt = Counter(age_C) # age_C데이터를 카운트한다.

print(cnt.most_common()[:2]) # 상위 2개의 최빈값을 출력한다.


>> 결과 : 

[(2, 10), (52, 10)]

# 2가 10개 있고, 52가 10개있음을 알 수 있다.



④ 분산과 표준편차

- 분산 : 데이터의 퍼짐 정도( 평균에서 거리가 얼마나 떨어졌는지 )

- 표준편차 : 평균에 대한 오차


문제4. A,B그룹의 분산을 각각 구하시오


age_A = [28, 27, 24, 27, 28, 28, 26, 27, 28, 26, 26, 27, 25, 27, 26, 25, 27, 29, 25, 28, 26, 25, 28, 25, 24,27,32,28,28,24]

age_B = [26, 27, 27, 27, 26, 27, 28, 31, 28, 27, 25, 26, 23, 26, 26, 25, 24, 26, 31, 28, 30, 33, 27, 32, 27, 26,40]


import numpy as np
print(np.var(age_A)) 
print(np.var(age_B)) 

>> 결과 : 
2.88
11.08

문제5. A,B그룹의 표준편차를 각각 구하시오

print(np.std(age_7))

print(np.std(age_8))


⑤ 범위, 사분위수 범위

- 범위 : 최대값 - 최소값

- 제1 사분위수(Q1) : 데이터의 25%가 이 값보다 작거나 같음.

- 제 2 사분위수(Q2):  중위수 데이터의 50%가 이 값보다 작거나 같음. 

- 제3 사분위수(Q3) : 데이터의 75%가 이 값보다 작거나 같음. 

- 사분위간 범위 :   1 사분위수와 제3 사분위수 간의 거리(Q3-Q1)이므로데이터의 중간 50%에 대한 범위

출처 : https://support.minitab.com/ko-kr/minitab/18/help-and-how-to/graphs/how-to/boxplot/interpret-the-results/quartiles/


문제6. A,B그룹의 범위 데이터값을 각각 구하시오

def my_range(data): # 범위 구하는 함수 생성

    return max(data)-min(data) 

 

print(my_range(age_7)) 

print(my_range(age_8)) 


>> 결과 : 

8

17


문제7. 사분위수 범위를 구하는 함수를 생성하고 A,B그룹의 사분위수 범위를 구하시오(Q3-Q1)


def data_range(data): # 사분위수 범위 구하는 함수 1

    import numpy as np

    return np.quantile(data,0.75)-np.quantile(data,0.25)

   

print(data_range(age_7)) 

print(data_range(age_8))

 

def data_range2(data): # 사분위수 범위 구하는 함수2

    import numpy as np

    return np.percentile(data,75) - np.percentile(data,25)

 

print(data_range2(age_7))

print(data_range2(age_8))


>> 결과 : 

2.75

2