파이썬 통계분석_Chapter02. 1차원 데이터 정리
데이터의 개요를 파악하면 수많은 통계분석 기법 중에서 적절한 기법을 선택할 수 있다.
데이터의 특징을 파악하는 방법은 크게 두 가지가 있다.
하나는 평균이나 분산 등의 수치 지표에 따라 데이터를 요약하는 방법이고, 다른 하나는 그림을 그려 시각적으로 데이터를 조감하는 방법이다.
이 데이터를 Numpy로 계산하기 위해, Numpy의 array데이터 구조로 된 scores라는 이름으로 저장
** array : 수치 계산에 강점을 지닌 다차원 배열
scores_df라는 이름으로 Pandas의 DataFrame을 작성
데이터를 중심으로 나타내는 지표
대푯값 : 데이터를 하나의 값으로 요약한 지표
01. 평균값(mean) : 가장 잘 알려진 대표값, 데이터를 모두 더한 뒤 데이터의 개수를 나누어 구한다.
- 파이썬을 활용해 평균값 구하기
- Numpy를 활용해 평균값 구하기
- DataFrame에서 mean 메서드를 활용해 평균값 구하기
** Pandasd에는 pd.mean()이라는 함수가 존재하지 않아 DataFrame이나 Series의 메서드를 사용한다.
02. 중앙값(median) : 데이터를 크기 순서대로 나열할 때 정확하게 중앙에 위치한 값
점수를 크기 순으로 나열하기 위해 np.sort를 사용한다.
- DataFrame에서 median메서드를 활용해 중앙값 구하기
** 파이썬, Numpy를 통해서도 중앙값 구하기 가능.
03. 최빈값(mode) : 데이터에서 가장 많이 나타나는 값
양적 데이터에서는 최빈값을 구하려고 해도 완전히 동일한 점수가 여러 번 나오는 경우는 거의 없기에 질적 데이터의 대푯값을 구할 때 사용되는 지표이다.
But, 도수 분포표를 도입하면 양적 데이터에서도 최빈값을 자연스럽게 정의할 수 있다.
- DataFrame이나 Series의 mode메서드를 활용해 최빈값 구하기
데이터의 산포도를 수치로 표현하려면?
산포도를 구하기 위해서 우선 편차(deviation)을 알아보아야 한다.
편차는 각 데이터가 평균으로부터 어느 정도 떨어져 있는지를 나타내는 지표이다.
편차는 데이터에서 평균을 뺌으로 알아볼 수 있다.
이처럼 산포도를 표현할 때, 그 지표로 편차를 사용할 수 있다.
But, 10명의 데이터를 편찻값을 통해 비교하기가 어렵다 -> 편차의 대푯값으로 평균을 선택한다면?
score의 편차 평균은 0이 된다. -> 편차 평균으로는 비교를 할 수 X
산포도의 지표로 편차를 이용하는 것은 바람직하지만, 편차의 평균이 항상 0이되므로 잘 사용하지 않는다.
B학생과 D학생은 모두 평균에서 14점 떨어져 있어 동일한 정도의 산포도를 가지고 있다.
이 때문에 평균보다 14점이 크든 14점이 작든 이 둘을 동일하게 취급하여 편차의 제곱을 이용한다.
그리고 그 평균으로 정의되는 지표가 분산(variance)이 된다.
- Numpy에서 var함수를 사용해 분산 구하기
** DataFrame이나 Series에도 분산을 계산하는 var 메서드가 있지만, Pandas에서 계산한 분산은 다른 값이 나온다.
Numpy는 표본 분산, Pandas는 불편분산을 사용하기 때문
평균의 단위는 원래 데이터 단위와 다르지 않지만 분산은 제곱이라는 단위를 사용한다.
ex) 영어 점수의 분산이 86점
원래 데이터와 동일한 단위를 쓰는 산포도의 지표가 있을까? -> 분산에 제곱근을 취한 표준편차(standard deviation)
- DataFrame이나 Series에는 지금까지 다룬 다양한 지표를 한 번에 구할 수 있는 describe 메서드가 존재한다.
데이터의 지표는 평균이나 분산에 따라 평가가 달라진다.
평균이나 분산에 의존하지 않고도 데이터의 상대적인 위치 관계를 알 수 있는 지표가 있을까?
데이터를 통일된 지표로 변환하는 것을 정규화라고 한다.
정규화를 통해 다양한 데이터를 동일한 기준으로 다룰 수 있기에, 데이터를 분석할 때 정규화는 일반적으로 사용된다.
01. 표준화 : 데이터에서 평균을 빼고 표준편차로 나누는 작업
표준화된 데이터를 표준화 변량(standardized data)이나 Z 점수(z-score)라고 한다.
시험 점수를 표준화하면
표준화된 데이터는 평균이 0, 표준편차가 1이 된다.
But, 데이터와 동일한 단위를 쓰는 표준편차로 나눗셈을 하였기에, 표준화된 데이터는 점수와 같은 단위를 쓰지 않는다.
02. 편찻값 : 평균이 50, 표준편차가 10이 되도록 정규화한 값을 말한다.
- score의 데이터를 사용하여 각 학생의 편찻값을 계산
- DataFrame으로 정리
편찻값이라는 지표로 어떤 학생이 평균적인 성적을 얻었고 어떤 학생이 우수한 성적을 얻었는지 한 눈에 파악할 수 있다.
1차원 데이터의 시각화
데이터의 특징이나 분포를 표나 그림을 통해 시각적으로 파악할 수 있는 방법이 있다.
- 50명의 영어 점수 array작성, Series의 describe 메서드로 주요 지표 확인
descrbie로 평균이나 분산, 시분위수 등의 지표로 데이터 중심이나 산포도 상태를 알 수 있지만 조금 더 세부적인 데이터 분포 상태를 알고 싶을 경우, 데이터가 취하는 값을 몇 개의 구간으로 나누고 각 구간에 몇 개의 데이터가 들어가는지를 세는 방법이 있다.
이처럼 분할된 구간과 데이터의 개수를 표로 정리한 것이 도수분포표이다.
구간을 계급.
계급에 속한 데이터 수를 도수라고 한다.
각 구간의 폭을 계급폭이라 하고, 계급의 수를 계급수라고 한다.
- np.histogram으로 도수 구현, bins로 계급수를, range로 최솟값과 최댓값을 지정.
- DataFrame으로 결과 정리
계급에 하한~상한 형태로 레이블을 붙임.
분석: 50~70점에 많은 학생이 몰려 있고, 고득점도 저득점도 없으며, 점수 차가 많이 나지 않는 시험이었다.
도수분포표에서는 계급과 도수 외에도 계급값, 상대도수, 누적상대도수도 자주 함께 사용된다.
-계급값은 각 계급을 대표하는 값으로, 계급의 중앙값이 이용.
- 상대도수는 전체 데이터에서 해당 계급의 데이터가 어느 정도의 비율을 차지하고 있는지를 나타냄.
- 누적상대도수는 해당 계급까지의 상대도수의 합.
- 계급값과 상대도수, 누적상대도수가 포함에 도수분포표.
도수분포표로 양적 데이터에 대해서도 자연스럽게 최빈값을 구할 수 있다.
도수분포표를 사용한 최빈값은 계급의 도수가 최대가 되는 계급의 계급값으로 정의된다.
** 주의) 최빈값은 도수분포표를 만드는 방법에 의존한다. (특히, 계급폭. 계급폭이 4로 하려 도수분포료를 계산하면 최빈값은 66이 된다.)
히스토그램은 도수분포료를 막대그래프로 나타낸 것이다.
데이터의 분포 상태를 더욱 더 시각적으로 파악할 수 있도록 해준다.
** Matplotlib(라이브러리) : 파이썬으로 그래프를 그릴 때 쓰는 표준 라이브러리.
- Matplotlib을 사용하여 히스토그램을 그림, hist 메서드 사용.
- 계급수를 25로 늘려, 즉 계급폭을 4점으로 하여 히스토그램 출력
도수분포표와 히스토그램은 계급수에 따라 모양이 크게 변한다.
-> 데이터 값을 적절하게 설정하는 것이 중요하다.
- 상대도수의 히스토그램을 누적상대도수의 꺾은선 그래프와 함께 그림.
상자그림(box plot)은 데이터의 산포도를 표현하는 그림이다.
상자그림을 그리면 데이터의 분포와 이상값을 시각적으로 파악할 수 있다.
상자그림에서는 분위수 범위의 Q1, Q2, Q3, IQR을 사용한다.
상자는 Q1에서부터 Q3을 나타내고, 수염은 Q1 - 1.5IQR부터 Q3+ 1.5IQR을 나타낸다, 여기에 들어가지 않은 데이터는 이상값이 된다.
- boxplot 메서드를 사용해 그림
분석: 상자그림에서도 60점 전후의 점수를 받은 학생이 많다는 것을 알 수 있다.