정신없이 달리다보니 어느덧 반환점을 돌고 있다. 앗싸~!!!
▶ 내용 요약
04-1. 통계로 요약하기
- df.describe()
. 25%/50%/75% 가 아닌 다른 범위를 알고 싶을 때 : df.describe(percentiles=[0.3, 06, 0.9])
. object 컬럼의 값 통계를 보고 싶을 때 : df.describe(include='object')
- 일반적인 수학 함수
. df.mean() / df.median() / df.max() / df.min()
- df.quantile() / sr.quantile() : 분위수
. df.quantile(0.25)
. df.quantile([0.25, 0.5, 0.75])
- df.var() : 분산
. 평균을 먼저 구한 뒤, 평균과 각 데이터 차이를 제곱해서 더한 뒤 데이터 갯수로 나눔
- df.std() : 표준 편차
. 분산에 루트를 씌운 값
import numpy as np diff = df['대출건수'] - df['대출건수'].mean() np.sqrt( np.sum(diff**2) / (len(df) - 1) ) |
- df.mode() : 최빈값. 제일 자주 나오는 값
04-2. 분포 요약하기
- 산점도 : plt.scatter(df['column1'], df['column2'], alpha=0.1)
- 히스토그램
. plt.hist(df['column1'], bins=5) : y축 폭을 5로 해서 그려라
. plt.historgram_bin_edge(df['column1'], bins=5)
- 상자 수염 그림
. 상자에서부터 1.5배 IQR 거리 안에서 가장 멀리 떨어져 있는 것 까지 표시
plt.boxplot( df[ ['column1', 'column2'] ]) plt.yscale('column') plt.show() |
▶ 기본 미션
p. 279의 확인 문제 5번 풀고 인증하기
우와 문제 스케일이 좀 크다 ^^
① 데이터 확보
- https://www.data4library.kr/ 접속해서 데이터를 확보하자.
- '데이터 제공' 탭을 통해서 데이터를 내려 받을 수 있다.
② 데이터 읽어들이기
- 다운로드 받은 데이터를 불러들여서 기본 모양을 살펴보자.
- 특히, encoding을 신경써야 한다 !!! (정부차원에서 이거 그냥 UTF-8 쓰도록 강제해야하는 것 아닌가)
③ Column 상태 확인 및 수정
- '발행년도'를 가지고 통계를 내야 하는데, 수치형이 맞는지 확인하고, 아니아면 변경을 해야한다.
- 그런데, 위와 같이 에러가 발생한다.
- 이유는 제일 밑에 나와 있다. "2022(2021)"처럼 입력되어 있는 데이터가 있다보니 casting이 안되는 것이다.
- '("를 포함한 데이터가 얼마나 있는지 확인해보고, '(*)' 부분을 삭제하도록 하자.
- 다시 casting 해보자.
- 또 에러가 나온다. 숫자가 아닌 데이터가 많은 것 같다.
- 확인해보자.
- 이거.... 쉽게 갈 수 있는 길을 너무 어렵게 가는 것 같은데....
- 일단 '.'을 포함한 것들이 많아 보이니 이를 먼저 처리해보자.
- 아직도 243개나 남았다.
- 데이터를 한 번 더 확인해보고 처리해보자.
- 이제 85개 밖에 안남았다.
- 데이터 확인해보고, 숫자가 아닌 것들을 전부 날려버리자.
- astype()을 적용하기 위해서는 ''(공백), NaN 값이 있으면 안된다.
- ''(공백)을 NaN으로 변환하고, NaN을 모두 0으로 변환해 astype()을 돌리자.
- 드디어 int64 dtype으로 변환되었다.
④ draw Histogram
- 이제 Boolean Indexing을 이용해서 원하는 범위를 한정하고, histogram을 그리면 된다.
▶ 선택미션
Ch.04(04-1)에서 배운 8가지 기술통계량(평균, 중앙값, 최솟값, 최댓값, 분위수, 분산, 표준편차, 최빈값)의 개념을 정리하기
일반적인 개념 정의는 너무나 잘 정리된 내용이 여기 저기 많이 있으므로 ^^
앞에서 만든 데이터를 가지고 직접 확인해보면서 살펴보겠다.
발행년도에 따른 대출건수가 어떻게 되는지를 scatter() 로 표현해봤다.
8가지 기술통계량을 직접 확인해보자.
① max / ② min : 해당 값의 최댓값 / 최솟값
③ mean / ④ median
. 평균값은 전체 데이터의 합을 전체 갯수로 나눈값이고,
. 중앙값은 데이터를 줄 세웠을 때 중간 위치에 해당하는 실제값을 의미한다.
⑤ quantile
. 분위수를 알려주는 것인데, 일반적으로는 IQR(InterQuartile Range, 사분범위) 사용
. 명시적으로 원하는 분위수를 확인할 수도 있다.
⑥ var / ⑦ std
. 분산은 각 데이터와 평균의 차이의 제곱의 총합을 전체 데이터 갯수만큼 나눠준 값이다.
. 표준편차는 분산에 루트를 씌운 값이다.
⑧ mode
. 최빈값은 데이터 값 중에서 가장 많은 빈도로 나오는 것을 의미한다.
우리 모두 파이팅 !!!
'Books' 카테고리의 다른 글
[혼공데분] 6주차_복잡한 데이터 표현하기 (0) | 2024.02.09 |
---|---|
[혼공데분] 5주차_데이터 시각화하기 (0) | 2024.02.01 |
[혼공데분] 3주차_데이터 정제하기 (1) | 2024.01.21 |
[혼공데분] 2주차_데이터 수집하기 (2) | 2024.01.16 |
[혼공데분] 1주차_데이터 분석을 시작하며 (1) | 2024.01.07 |