파이썬 Z-score, IQR 이상치 구하는 코드 연습!
파이썬 이상치 Z-score, IQR
#이상치
Z-score 코드 (+-3)
df = pd.read.csv(데이터 불러오기)
#데이터가 문자열일 경우 정수로 변환
df[‘sw’]=df[‘Shipping Weight’].str.split().str[0]
df[‘sw’]=pd.to_numeric(df[‘sw’], errors=’coerce’).fillna(0).astype(int)
-> ‘coerce’ 숫자로 못바꾸는 값이 있다면 NaN으로 처리함
df1 = df[[‘sw’]] -> 데이터 프레임 형태로 보기[[]]
#표준화 진행
from sklean.preprocessing import StandardScaler
scale_df = StandardScaler().fit_transform(df1)
scale_df -> 보기 불편하게 array 형태로 나옴 그래서!
scale_df = pd.DataFrame(scale_df) 로 데이터 프레임 형태로 바꿔서 보기!
scale_df
#병합해서 비교하기
merge_df = pd.concat([df1,scale_df], axis=1)
merge_df.columns = [‘raw’,’Z-score’]
merge_df
#이상치 확인
mask = ((merge_df[‘Z-score’]<-3) | (merge_df[‘Z-score’]>3)) -> +-3 에서 벗어난 값
strange_df = merge_df[mask]
strange_df.head()
strange_df.count()
#이상치
IQR
df = read.csv데이터 불러오기
df[‘sw’]=df[‘Shipping Weight’].str.split().str[0]
df[‘sw’]=pd.to_numeric(df[‘sw’], error=‘coerce’).fillna(0).astype(int)
df1 = df[[‘sw’]]
#표준화 진행
import pandas as pd
q3 = df1[‘sw’].quantile(0.75) -> 상위25%
q1 = df1[‘sw’].quantile(0.25) -> 하위25%
iqr = q3 - q1
q3, q1, iqr
-> iqr = q3 - q1
-> 이상치: q3 + 1.5 = iqr보다 높거나 / q1 - 1.5 = iqr보다 낮은 값을 의미
df1[‘이상치여부‘] = df1.apply(is_outlier, axis = 1) -> axis = 1 지정 필수!!
df1
요새 여러모로 머신러닝 따라가느라 TIL을 정성스럽게 작성하진 못하고 있지만 ㅜㅜ 하루하루 타이트하게 안하면 정말 다음날 할게 너무 많아진다.. 그렇다고 핑계대면 안되기 때문에! 지난번 기초프로젝트 전에 제대로 익히지 못한 이상치 확인하는것 관련 코드 연습했다. 확실히 직접 실습코드로 적어가면서 하니 개념이 확 다가왔고 어떻게 파악하는건지 숙지할 수 있었다. 내일도 화이팅해보자!!