TIL

2024-05-27

여연찌 2024. 5. 27. 20:48
  • Today

1. Python Basic 3회차 수강

2. 기초통계 수강

 


  • Today I Learned

 

 

Python Basic

 

 

결측치 처리

1. 제거

# 결측치 제거1 - 열 제거하기 
df3 = df3.drop('Unnamed: 4', axis=1)

# 결측치 제거2 -결측치가 있는 행들은 모두 제거 
df3.dropna(inplace=True)

drop 라는 함수가 결측치를 제거하는 것인가? 했는데

다시보니 그냥 제거하는 것이었음!

 

* df3 를 보았을 때 모든 행이 결측치였기 때문에 그 열을 삭제 한 것 

 

dropna(inplace=True) 에서

inplace 가 어떤 뜻인지? 

 

* inplace 는 원본을 변경할지에 관한 여부이다.

default 값은 False 로 True 를 사용하면 원본이 변경된다

 

 

2. 대체 

# 결측치 대체1 - 최빈값 
df3 = df3['Interaction type'].fillna(df3['Interaction type'].mode().iloc[0])

# 결측치 대체2 - 평균값 
df['sw']=df['sw'].fillna(df['sw'].mean())

# 결측치 대체3 - 중앙값 
df['sw']=df['sw'].fillna(df['sw'].median())

 

iloc[0] 

는 0번째 있는 값을 모두 처리한다는 뜻인데

이 컬럼에서 쓰는 이유를 모르겠음..

값이 하나만 있는 것이 아닌건가 ?

이런 데이터 값이면 한개만 입력되어있어도 0인건지? 

그럼 다른 값으로 변환하는 건 안되는지? 

 

fillna 에 다른 값을 넣었을 때에는 변환이 된다.. 예를 들어 숫자 나 문자 도 가능

 

하지만 최빈값은 변환이 안됨!

꼭 iloc[0] 이렇게 추가를 해주어야 변환이 된다...

 

 

* 정욱튜터님 멘토링

판다스에서 시리즈도 취급을 해주고 있지만 

따로 순서를 지정해주지 않는다면 막무가내로 입력이 되기 때문에 순서를 지정해주어야 한다.

최빈값 등 값이 한개가 아닐 수가 있기 때문에 판다스에서는 몇번째 값을 가져오는지 알 수 없기 때문에 지정해주어야 한다!

 

 

 

* 머신러닝으로 사용

K-NN

: NA 값의 가장 가까운 주변 K 개의 평균을 NA 값으로 대체

: K 개에 가장 가까운 곳에 있는 값으로 대체

: 거리 기반으로 값을 대체하는 방법

더보기

** 머신러닝을 실행하기 전에 표준화를 먼저 진행해주어야한다!

표준화란? 평균을 0으로, 표준편차를 1로 바꾸는 것이다.

0 을 중심으로 양쪽으로 데이터를 분포시키는 방법.

 

예를 들자면

다른 방식으로 수집된 데이터의 경우 그 데이터의 값의 의미가 다를 수 있다.

일주일동안의 접속일수가 1일~ 최대 7일 이고

결제금액은 0원부터 상한선이 없다.

이 경우 접속일수의 1과 결제금액 1은 다른 의미인데 표준화를 진행하지 않으면

데이터가 너무 클 경우 숫자의 크기가 크다 라고 받아드릴 수 있다.

 

즉, 데이터의 범위가 클 때 0을 중심으로 압축을 시켜 데이터를 양쪽으로 분포 시키는 것

# 표준화를 진행하기 위한 라이브러리 선언
from sklearn.preprocessing import StandardScaler

# 표준화 진행
# StandardScaler().fit_transform()
scale_df = StandardScaler().fit_transform(knn_df)

import pandas as pd
from sklearn.impute import KNNImputer

# KNNImputer 객체 생성
# K(이웃의 수) 지정(3개의 평균으로 계산)
imputer = KNNImputer(n_neighbors=3)  

# KNN을 사용하여 결측치 대체
filled_df = pd.DataFrame(imputer.fit_transform(scale_df), columns=knn_df.columns)

 

* k 값을 지정하여 KNNImputer 객체를 생성할 수 있다.

 

다음주부터는 머신러닝 학습주차인데 미리 맛보기로 체험해볼 수 있었다.

 

 

 

이상치 식별

Z-Score

Z 값은 X 에서 평균을 뺀 데이터를 표준편차로 나눈 값, 표준점수라고도 한다.

평균에서  ±3 이상이면 이상치로 간주 한다.

 

IQR

데이터의 25% 지점과 75% 지점 사이의 범위를 사용

이를 벗어나는 값들은 모두 이상치로 간주한다.

 

Isolation Forest

:질문에 질문들이 꼬리를 물고 이어져 각 값에 배치되는데,

다른 관측치에 비해 짧은 경로 길이를 가진 데이터를 이상치로 감지

 

DBScan

: 어떠한 클러스터에도 포함되지 않는 데이터를 이상치로 탐지

 

 

이상치를 처리하는 방법은 제거, 대체, 분리 등이 있다.

이상치에 관하여도 분석을 할 수도 있으니 새로운 df 를 생성하여 이상치를 저장해둔다.

 

 

 

 


  • Next

1. 새로운 팀 인사

2. 기초통계 수강

 

'TIL' 카테고리의 다른 글

2024-05-29  (0) 2024.05.29
2024-05-28  (0) 2024.05.28
2024-05-24  (0) 2024.05.24
2024-05-23  (0) 2024.05.23
2024-05-22  (0) 2024.05.22