<Python>/[DataFrame]

파이썬 Pandas DataFrame 결측치 대체

9566 2021. 12. 18. 19:03
728x90

 

결측치 대체

 

1. (결측치 -> 평균값)
df.X1 = df.X1.fillna(df.X1.mean()) # NaN을 평균값으로 대체

2. (결측치 -> 최빈값, 평균값)
df.fillna({'X1':df['X1'].mode()[0],
           'X2':int(df['X2'].mean())}, inplace=True) # X1은 최빈값, X2는 평균값으로 대체

3. (결측치 -> 정수)
df['X1'] = df['X1'].fillna(3) # 결측값을 3으로 대체

4. (결측치 -> 0)
df = df.replace(np.NaN, 0)

+ 추가

1. ( 값 -> 결측치)
df.iloc[3, 3] = np.nan # 3행3열을 결측값으로 교체 # iloc = index location(인덱스 위치)

2. (문자 -> 값)
df.replace(['good', 'bad'], [0, 1])

 

실습 코드

 

import pandas as pd 
import numpy as np

df = pd.DataFrame({ 'X1': [np.nan, 1, 1, 4], 
                           'X2': [5, 7, np.nan, 9], 
                           'X3': [np.nan, 10, np.nan, 12]}) 
df

# 1. (결측치 -> 평균값)
df.X1 = df.X1.fillna(df.X1.mean()) # NaN을 평균값으로 대체

# 2. (결측치 -> 최빈값, 평균값)
df.fillna({'X1':df['X1'].mode()[0],
           'X2':int(df['X2'].mean())}, inplace=True) # X1은 최빈값, X2는 평균값으로 대체

#3. (결측치 -> 정수)
df['X1'] = df['X1'].fillna(3) # 결측값을 3으로 대체

# 4. (결측치 -> 0)
df = df.replace(np.NaN, 0)

 

 

실습 결과

 

 

실습 파일

결측치 대체 by 9566.ipynb
0.01MB

 

728x90