이번 포스팅에서는 Python pandas 데이터프레임 안에 여러개의 칼럼 별로 결측값을 대체하는 방법(how to fill missing values per each columns)을 다르게 하는 방법을 소개하겠습니다.
먼저 예제로 사용할 간단할, 각 칼럼별로 결측값을 포함하고 있는 pandas DataFrame을 만들어보겠습니다.
import numpy as np import pandas as pd # Make a DataFrame with missing values df = pd.DataFrame({'a': [1, 2, 3, np.nan, 5], 'b': [30, 20, np.nan, 35, 32], 'c': [0.2, np.nan, 0.5, 0.3, 0.4], 'd': ['c1', np.nan, 'c3', 'c4', 'c5'], 'e': [10, 11, np.nan, 13, 15]})
df
|
다음으로, 각 칼럼별로 결측값을 대체하는 방법을 Dictionary에 Key (칼럼 이름): Value (결측값 대체 방법/값) 로 정리해보겠습니다.
[ 칼럼별 결측값 대체 방법(전략) ]
- 칼럼 'a': 0 으로 결측값 대체
- 칼럼 'b': 평균(mean)으로 결측값 대체
- 칼럼 'c': 중앙값(median)으로 결측값 대체
- 칼럼 'd': 'Unknown'으로 결측값 대체
- 칼럼 'e': 결측값 보간 (interpolation)
missing_fill_val = {'a': 0, 'b': df.b.mean(), 'c': df.c.median(), 'd': 'Unknown', 'e': df.e.interpolate()} print(missing_fill_val) {'a': 0, 'c': 0.35, 'b': 29.25, 'e': 0 10.0
1 11.0
2 12.0
3 13.0
4 15.0
Name: e, dtype: float64, 'd': 'Unknown'}
|
이제 준비가 다 되었으니 df DataFrame의 각 칼럼별로 서로 다른 결측값 대체 전략을 사용하여 결측값을 채워보겠습니다. fillna() 함수의 괄호 안에 위에서 정의한 Dictionary 를 넣어주면 끝입니다. 간단하지요? ^^
df2 = df.fillna(missing_fill_val) df2
|
만약 원본 df DataFrame 을 보존할 필요가 없이 바로 결측값을 채워넣기 해서 수정하고 싶으면 inplace=True 옵션을 설정해주면 됩니다.
df.fillna(missing_fill_val, inplace=True)
|
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾹 눌러주세요.