본문 바로가기

Data Science/Python

Python 결측치 처리

1. 결측치 확인

np.random.rand()로 0~1 사이 랜덤한 data를 만들고 임의로 결측치를 만들었다.

import pandas as pd
import numpy as np

#np.random.rand(m, n) : 0~1 사이 난수 생성
data = pd.DataFrame(np.random.rand(7, 3), columns=['A', 'B', 'C'])
data


#결측치 만들기
data.iloc[0, 0] = np.nan
data.iloc[1, 0] = np.nan
data.iloc[2, 2] = np.nan
data.iloc[3, 4] = np.nan
data.iloc[4, 3] = np.nan
data.iloc[5, 1] = np.nan
data.iloc[5, 2] = np.nan

data

 

 

data.isnull().sum()으로 컬럼 별 결측치가 몇 개 있는지 확인 가능하다.

#결측치 확인

data.isnull().sum()

>

 

msno 라이브러리로 결측치를 시각화 할 수 있다. 

지금은 데이터가 크지 않아 필요없지만, 데이터 사이즈가 클 때는 결측치를 한 눈에 확인할 수 있어 유용하게 사

import missingno as msno

msno.matrix(df = data.iloc[:, :], figsize=(8, 8));

 

2. 특정 값으로 결측치 처리

 

data.fillna(0)로 결측값을 0으로 채운다. 

#특정 값으로 채우기

data_0 = data.fillna(0)
data_0

 

2. 평균 값으로 결측치 처리

data.mean()

data.fillna(data.mean())

>

A 0.256064

B 0.538347

C 0.319626

dtype: float64

 

 

3. 최빈값으로 결측치 처리

#최빈값 처리를 위해 'A'컬럼에 동일한 값 0.456805가 있는 row를 새로 만들었다.
 data.loc[7] = {'A': 0.456805	, 'B': 0.123142	, 'C': 0.034920, 'D' : 0.54354, 'E' : 0.222441}

#최빈값 처리
most_A = data['A'].value_counts(dropna = True).idxmax()
data['A'].fillna(most_A, inplace = True)

data

 

'Data Science > Python' 카테고리의 다른 글

지수 표기 숫자로 변환하여 표현하기  (0) 2021.02.23
Python으로 하는 EDA(Exploratory Data Analysis)  (0) 2021.01.31
python으로 카이제곱 검정  (0) 2021.01.06
Python으로 T-test  (0) 2021.01.05
matplotlib - bar chart  (0) 2021.01.05