EDA
EDA 필요성
데이터에 대한 이해와 탐색을 기반으로 문제 발견 및 해결, 데이터 분석을 하는 과정에서 필요한 통계도구, 자료수집 등을 결정하는 데도 도움
일변량
다변량
EDA를 통해 파악하려는 변수 여러개 : 변수들간의 관계를 보는 것이 목적
여러 개의 독립변수에 여러 개의 종속변수를 동시에 분석하는 것
다변량 분석은 여러 각도와 측변에서 변수들의 관계를 분석하는 것에 유용
시각화
비시각화
EDA의 유형
EDA의 단계
1. 전체적인 데이터 분석
통계치 분석
이상치 : 관측된 데이터의 범위에서 많이 벗어난 아주 작은 값이나 큰 값
이상치 분석 방법
# 이상치 구하기 z-score
import numpy as np
data = [1,2,3,4,1,1,20,1,2,3,2,1,1,2]
mean = np.mean(data)
std = np.std(data)
print('평균 : ', mean)
print('표준편차 : ', std)
threshold = 3
outlier = []
for i in data :
z = (i-mean) / std
if z > threshold :
outlier.append(i)
print('outlier :', outlier)
IQR 이상치 탐색
Q1과 Q3은 데이터를 4등분 했을 대의 범위로 Q1은 최소값을 포함한 하위 25% 범위를, Q3은 최대값을 포함한 상위 25%의 범위를 표현
IQR의 값은 Q3에서 Q1을 뺀 값
(Q1 - 1.5 IQR)보다 작거나 (Q3 + 1.5 IQR)보다 큰 데이터를 이상치로 처리
import numpy as np
def iqr_outlier(df=None, column=None, weight=1.5) :
# target 값과 상관관계가 높은 열을 우선적으로 진행
quantile_25 = np.percentile(df[column].values, 25) #Q1의 값
quantile_75 = np.percentile(df[column].values, 75) #Q3의 값
iqr = quantile_75 - quantile_25 # iqr = Q3 - Q1
iqr_weight = iqr * weight
low_outlier = quantile_25 - iqr_weight #최솟값
hight_oulter = quantile_75 + iqr_weight #최댓값
#이상치 검색
outlier_idx = df[column][ (df[column] < low_outlier) | (df[column] > high_outlier) ].index
return outlier_idx
result = iqr_outlier(df=df, column='컬럼명', 1.5)
결측치
누락된 데이터로, 전처리 단계에서 적절한 값으로 처리가 필요
결측치 타입
Python 언어를 사용하여 지도 시각화를 구현할 수 있는 라이브러리