본문 바로가기
IT 자격증/빅데이터분석기사

코랩을 이용한 데이터 전처리

by ->^_^<- 2022. 5. 6.
반응형

https://colab.research.google.com  

 

Google Colaboratory

 

colab.research.google.com

업로드한 데이터파일은 런타임 재활용시 삭제됨

계정으로 로그인한 경우 코드가 남아있어서 데이터만 추가하여 계속 실습이 가능

데이터가 삭제되지 않도록 하려면

Google Drive를 연결하고 파일을 Drive에 업로드 후 해당 경로를 설정하면 됨

ex)

import pandas as pd
data = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/mtcars.csv')

 

# 전처리 : 독립변수 X를 자세히 관찰하고, 잘 표현될 수 있는 형태로 변형하는 작업

1. 불필요한 열 삭제

 - 컬럼명으로 특정한 열 삭제

 X = data.drop(columns = '불필요한 열')  

 - 컬럼의 위치로 불필요한 열 삭제

 X = data.iloc(:, 1:)  //첫번째 열 삭제

 

2. 누락된 값(결측값)을 변경하거나 삭제

 - 데이터 삭제

 - 데이터 변경 : 평균값, 중위값 등

 - isnull() 함수로 결측치 여부 확인 => 결과가 True, False로만 나오기 때문에 sum() 함수 활용 필요

print(X.isnull().sum())

- 평균값으로 결측치를 대체하기

X_A_mean = X['A'].mean()

X['A'] = X['A'].fillna(X_A_mean)
 

- 중앙값으로 결측치를 대체하기

X_B_median = X['B'].median()

X['B'] = X['B'].fillna(X_B_median)

 

3. 잘못된 데이터 수정

- unique() 함수를 이용하여 잘못된 값, 의도치 않은 데이터 여부 확인

- replace() 함수를 이용하여 값 변경 (*3 → 3, *5 → 5)

X['gear'] = X['gear'].replace('*3','3').replace('*5''5')

 

4. 이상치값 조정

- 이상값은 비정상적인 값으로 처리없이 분석할 경우 데이터분포가 왜곡될 수 있음

- 데이터 스케일링 하기전에 미리 처리 필요

- 이상치 확인 방법은 사분위법 / 평균과 표준편차 활용법 이 사용된다.

 

1) 사분위법

- describe() 함수를 이용하여 기초통계량 정보 확인

- 이상값을 확인하기 위해서는 3사분위수 - 1사분위수 로 IQR을 구하고

  3사분위수 + 1.5 * IQR, 1사분위수 - 1.5 * IQR 값을 구해야 한다. 

- 먼저 최대경계값 이상치에 해당하는 값 구하기

  X_iqr = X_describe.loc['75%'] - X_describe.loc['25%']

  X_max_line = X_describe.loc['75%'] + 1.5 * X_iqr

- describe() 함수 결과 중 max값이 이상치를 초과하는지 확인

 print(X_describe.loc['max'])

- 해당 컬럼에서 값이 큰 라인을 찾아서 최대값으로 변경하기

  print(X.loc[X['cyl'] > 14])

  X.loc[X[14, 'cyl'] = 14

- 반대로 최소경계값 이상치에 해당하는 값 구하기

 X_min_line = X_describe.loc['25%'] - 1.5 * X_iqr

 print(X_describe.loc['min'])

 

2) 평균과 표준편차 활용

이상값을 판단하는 범위는 평균값 중심의 += 1.5 표준편차

def outlier(datacolumn) :
  mean = data[column].mean();
  std = data[column].std()
  lowest = mean - (std * 1.5)
  highest = mean - (std * 1.5)
  print("최고 경계값 : ", lowest, "최대 경계값 : ", highest)
  outlier_index = data[column][ data[column] < lowest] | (data[column] > highest).index
  return outlier_index

 

 

5. 각 열들의 숫자값을 동일한 범위의 숫자로 변경

6. 데이터타입 확인

7. 문자로 구성된 범주형 데이터는 숫자형으로 변경

8. 분석에 필요한 새로운 컬럼 추가

 

 

 

728x90