• 목록 삭제 Listwise Deletion : 결측치가 존재하는 행을 제거
    • df_obj.dropna(axis=0, inplace=True)
    • 제거하는 행이 적을 때만 유용. 대부분의 경우 비추천
  • 열 삭제 Dropping columns & features : 결측치가 존재하는 열을 제거
    • df_obj.dropna(axis=1, inplace=True)
    • 중요하지 않은 피처에 대해서만 유용.
  • 대체 Imputation : 결측치를 관측치의 통계값(평균, 최빈, 중앙,…)으로 대체
    • df_obj['columns'].fillna(df_obj[’columns’].mean()) df_obj['columns'].fillna(df_obj[’columns’].mode()[0]) df_obj['columns'].fillna(df_obj[’columns’].median())
    • df_obj['columns'].fillna(*method='ffill'*) : 시간상 앞에 있는 값을 대입
    • df_obj['columns'].fillna(*method='bfill'*) : 시간상 뒤에 있는 값을 대입
    • df_obj['columns'].interpolate() : 선형 보간법을 통한 대입.
      • method : linear(선형 보간), time(df의 index가 시간일 때 시간 기준 선형 보간), polynomial(곡선 형태로 보간, order 옵션 필요), spline(spline curve 보간, order 필요), nearest(가장 가까운 값으로 대체)
      • order : 다항식의 차수를 설정. 2 → quadratic, 3 → cubic
  • 회귀 대체 Regression : 변수간의 관계를 파악 후 예측하여 결측치를 대체
    • interpolate은 자기자신의 값으로 예측하여 대체하는 것인데 회귀 대체는 다른 변수를 입력값으로 하여 결측치를 대체하는 것.
    • 별도의 회귀 모델링이 필요.
  • Hot Deck Imputation : 결측치가 없는 유사한 행을 찾아 해당 행의 값으로 대체
    • 구체적인 결측값 대체 방법은 구현하기 나름.

    • KNNImputer : K-Nearest Neighbors 알고리즘을 기반으로 유사한 행을 찾아 결측치를 대체

      from sklearn.impute import KNNImputer
      import pandas as pd
      df = pd.read_csv("")
      imputer = KNNImputer(n_neighbors=2) # 가까운 2개 이웃 데이터의 평균으로 대체
      df_filled = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)