Data Science/Statistics
[elice 통계] 논리적 자료의 요약(평균, 중간값, 최빈값, 분산, 사분위수, cv, 도수분포표)
Tashapark
2025. 5. 23. 22:59
728x90
*elice 강의안
- 이미 통계에 많이 접한 사람들은 저런 낚는 용에 넘어가지 않음.
- 모수는 다른 것이 될 수도 있지만, 중심위치와 퍼진 정도를 중요하게 생각함.
- so, 양 극단(최대, 최소)를 빼고 평균을 내기도 함.
- 새로 들어온 값 있을 때마다 다시 확인해야 하기 때문에 잘 사용하지 않음.
- 특히, 데이터 값이 많을 수록 자주 사용하지 않음.
- 최빈값은 넘파이에 없음. scipy의 stats를 가지고 와야 함.
- stats.mode()
import numpy as np
from scipy import stats
coffee = np.array([202, 177, 121, 148, 89, 121, 137, 158])
# 최빈값 계산
cf_mode = stats.mode(coffee)
print("Mode :", cf_mode[0][0]) #[0][0] 일 때는 값을 볼 수 있고
#[1][0]하면 몇 번 나왔는지 빈도를 알 수 있음.
- 편차: 양궁선수 < 아마추어 < 일반인. 라고 생각하면 편함.
- 편차의 합이 0이기 때문에 절대값을 사용하는 방법도 있지만, 대개 편차를 제곱해서 합함.
- 2와 3이 둘 다 20 백분위수에 들어갈 수 있기 때문에 2개를 더해서 평균을 해줄 수 있음.
-> 2는 20% 지점이고 3이 80% 지점이기 때문에 엄밀히 말해서 둘 다 되는 것.
- 정수가 아닌 경우는 1을 더한 값 m을 구하고, m번째로 작은 관측값임.
- IQR= 작은 그룹의 중앙값과 큰 그룹의 중앙값 사이의 거리
- 범위는 안 봐도 됌
- 즉, 같은 단위의 값을 나눠준 거니깐, 결국 단위가 사라짐.
- 정확한 원자료가 없고 도수분포표만 있을 때도
- 분산 첫번째 식 , 아니고 - 임
import numpy as np
import pandas as pd
# 주량 데이터
drink_cup = pd.DataFrame({
"cup": [22, 7, 19, 3, 10, 8, 19, 7, 15, 9, 35, 5],
"who": ["A", "E", "D", "B", "C", "A", "A", "A", "D", "B", "C", "B"]
})
print(drink_cup)
# 도수분포표
factor_cup = pd.cut(drink_cup.cup, 4) #구간을 4개로 만드는 것
group_cup = drink_cup["cup"].groupby(factor_cup) #나눈 것으로 그룹화
count_cup = group_cup.agg(["count"]) #그룹별로 결과 확인 agg, "count"를 명령어로 쓰는 게 웃김.
print(count_cup)
############################
cup count
(2.968, 11.0] 7 # ( 초과, ] 이하
(11.0, 19.0] 3
(19.0, 27.0] 1
728x90
반응형