설날이 훌쩍 지나가고 사주차가 다가왔다. 벌써 스터디의 50%가 지나갔다니... 책을 잘 읽어보려고 하지만 실제 실습을 모두 해보지 않아 습득하는 지식이 조금 낮다고 판단되어 이번주부터는 조금 더 집중하여 보고자 한다..!
통계로 요약하기
데이터 파일을 읽어온 후 각각 메서드 활용에 따라 다른 결과를 볼 수 있다
기술 통계 구하기
Describe() 메서드를 활용하면 데이터에 대한 요약 통계를 보여줄 수 있다. Info()와 유사한 메서드지만 보여지는 통계 결과가 다르다.
Describe() 메서드 사용에 따라 도출된 결과:
1. count: 데이터 컬럼별 누락된 값을 제외한 개수
2. mean: 데이터 컬럼별 평균
3. std: 데이터 컬럼별 표준편차
4. min: 데이터 컬럼별 최솟값
5. 50%: 데이터 컬럼의 50% 지점에 위치한 값
6. 25%, 75% : 데이터 컬럼별 25%, 75% 지점에 위치한 값
-> 다른 지점의 값 추출을 위해 percentile을 변경하여주면 됨. describe(percentile[0.3, 0.6, 0.9])
7. max : 데이터 컬럼별 최대 값
Describe() 에 include 를 넣게 된다면 다른 데이터 열의 기술통계를 볼 수 있음
Describe(include = 'object') 메서드를 활용하여 도출된 결과:
1. count: 누락된 값을 제외한 데이터 개수
2. uinque: 고유한 값의 개수
3. top: 가장 많이 등장한 값
4. freq: top행에 등장한 항목의 빈도수
평균 구하기
Mean() 메서드를 사용하면 평균을 제공하여 줍니다
pd.mean() 결과:
- 평균값 도출
Median() 메서드를 활용하면 중앙값을 구할 수 있습니다.
pd.median() 결과:
- 중앙값 도출
이전에 알려드린 drop_duplicate()메서드와 median(), mean()값을 통해 중복값을 제거한 중앙값을 구할 수도 있습니다.
최솟값, 최댓값 구하기
Max(), min() 값을 통하여 최솟값과 최댓값을 구할 수 있습니다.
Quantile()메서드를 통하여 분위수 값을 계산 할 수 있습니다.
quantile(0.25) 결과:
- 하위 25%에 위치한 값
Intrapolation 보간을 통해 두지점 사이에 놓인 특정 위치 값을 구할 수 있습니다
quantile()을 통하여 백분위 값을 구할 수도 있는데요. 적은 개수의 수자 내 백분위를 계산하는 것은 쉽지만, 다량의 데이터 내 백분위 계산은 바로 하기 어려운 점이 있습니다.
그런 상황에 백분위를 구하기 위하여 아래 방법을 사용하면 됩니다.
데이터에 10이 위치한 백분위를 찾기 위함
borrow_10_flag = pd['특정조건'] < 10 을 사용하여 불리언 배열 도출
borrow_10_flag.mean() -> 0.6402 통하여 평균을 구함
pd['특정조건'].quantile(0.65) -> 10 을 통하여 대략 백분위는 0.65일 것으로 추출하였으며, 검증까지 완료함
분산 구하기
분산은 데이터가 평균에서 퍼져있는 정도를 나타내주기 때문에 분산만으로 정도를 판단하기는 어렵습니다.
Var() 메서드를 통한 분산 계산 할 수 있습니다
표준편차 구하기
표준편차는 분산에 제곱근을 한 수치입니다. 표준편차를 통하여 평균을 중심으로 대에터가 얼만큼 떨어져 분표하여 있는지 표현하는 값 입니다.
std() 메서드를 통하여 표준편차를 계산할 수 있습니다.
평균이 11이나 표준편차를 통하여 나온 값이 19라면, 아마 평균보다 훨씬 큰 값이 있기 때문에 표준편차가 큰 것으로 예상 할 수 있습니다
최빈값 구하기
최빈값은 가장 많이 등장한 값을 의미합니다.
Mode()메서드를 통하여 최빈값을 찾을 수 있습니다
분포 요약하기
대표적인 그래프는 산점도, 히스토그램, 상자 수염 그림이 있습니다.
산점도 그리기
matplotlib의 scatter()함수를 통하여 스캐터 그래프를 그릴 수 있습니다
plt.scatter(X, Y)를 사용하면 X,Y 좌표를 평면에 그리게 됩니다. 그래프의 투명도를 alpha로 조정 할 수 있습니다.
히스토그램 그리기
hist()함수를 통하여 히스토그램을 그릴 수 있습니다.
plt.hist(리스트, bins=5) 를 사용하면 데이터를 총 5개의 구간으로 나누어 히스토그램을 그립니다.
넘파이가 제공하는 histogram_bin_edges()함수를 통하여 다섯 구간의 경계값을 출력 할 수 있습니다.
히스토그램을 그릴 때, 한 구간의 도수가 너무 큰 경우 제대로 표현이 어려운데 이럴 때는 y 축을 로그 스케일로 바꾸어 조정하면 값 마다의 차이가 줄어들 수 있습니다.
plt.hist(리스트)
plt.yscale('log')
y 값을 조정하는 것과 같이, x값 조정도 가능합니다. 기본으로 x축은 10개의 구간으로 나뉘어져 있지만, bins 매개변수를 통하여 100개로 바꾸면 분포가 더 세밀하게 보여질 수 있습니다.
상자수염 그리기
상자수염은 최솟값, 사분위 3개, 최댓값을 사용해 데이터를 요약하는 그림입니다.
상자수염을 그리는 방법은 아래와 같습니다
1. 데이터의 사분위를 계산합니다. 25%, 75%를 밑면과 윗면으로 하는 직사각형을 그립니다.
2.중간값, 50%에 위치한 지점에 수평선을 긋습니다
3. 사각형의 밑면과 윗면에서 사각형 높이의 1.5배 떨어진 거리 안에서 가장 멀리 있는 샘플까지 수직설을 그립니다.
4. 수직선 밖에서 최솟값과 최댓값까지 데이터를 점으로 표시합니다. 이 영역의 데이터를 이상치라고 부릅니다.
boxplot()함수를 활용하여 상자수염 그리기가 가능하나 데이터 사분위가 매우 작을 경우 상자가 작아 y 축을 로그 스케일로 바꾸는 것 도 좋음
금주 과제
