Road to Data Scientist

데이터 전처리_Data Preprocessing_IBM DATA SCIENCE 본문

코딩 테스트/Python

데이터 전처리_Data Preprocessing_IBM DATA SCIENCE

ShazelP 2024. 1. 27. 15:44

IBM DATA SCIENCE 내용 정리

'?' 데이터 NaN으로 바꾸기

import numpy as np

df.replace('?',np.nan, inplace=True)

- numpy 설치

- 데이터셋 앞에서 df 로 저장했다는 가정하에 진행

 

데이터가 존재하지 않는 (Null) 셀 찾기

missing_data = df.isnull() #missing_data 변수에 해당 데이터셋을 NUll값 존재 유무로 보여줌 
missing_data.head()

- df.isnull() : 해당 셀이 Null --> True / not Null --> False 반환

 

Null 값인 데이터 개수 알아보기

for column in missing_data.columns.values.tolist():
	print(column)
    print(missing_data[column].value_counts())
    print("")

 

- missing_data.columns.values.tolist(): missing_data 의 열(헤더)들의 이름을 리스트로 만들어달라는 뜻

 >>ex: 데이터의 열(헤더) 이름들이 A, B, C인 경우 [A, B, C] 로 만들어짐

- missing_data[column].value_counts(): 해당 열이 갖고 있는 값들이 각각 몇 개인지 개수 알려달라는 뜻

 >>ex: 아래의 표의 경우 

A B C
1 2 1
1 2 1
0 0 0

 

A : 1 - 2개, 0 - 1개 // B : 2 - 2개, 0 - 1개 // C : 1 -2개, 0 - 1개

- 즉, missing_data 의 열(헤더) 이름과

 

Column(열)의 mean값 구하고 NaN 셀 해당 값으로 바꾸기

# 'bore' column 의 mean 값
avg_bore = df['bore'].astype('float').mean(axis=0)

# NaN 값 mean 값으로 바꾸기
df["bore"].replace(np.nan, avg_bore, inplace=True)

- df['bore'] : df 데이터의 'bore' 열

- astype('float') : 데이터 타입을 float 형태로 바꾸기

- mean(axis=0): mean 값을 구하는데, axis=0 열 기준으로 구하라(세로로)

 

NaN 값 최다빈도수값으로 바꾸기

# 'num-of-door' 열에서 최다 빈도수 값 찾기
df['num-of-doors'].value_counts.idxmax()
# 'four' 반환

# NaN 값 바꾸기
df["num-of-doors"].replace(np.nan, "four", inplace=True)

 

NaN 값이 있는 열 삭제하기

# price 열에 NaN 이 있을 때 해당 행(row) 삭제하기
df.dropna(subset=["price"], axis=0, inplace=True)

#reset index (위에서 행 삭제했으니까)
df.reset_index(drop=True, inplace=True)

- drop=True : 기존 인덱스 출력하지 않고 새로 인덱스 만들어서 출력