본문 바로가기
PYTHON/Pandas 판다스

[PYTHON] 데이터프레임 전처리 (결측치)

by G허니 2024. 3. 10.

결측치(NaN)는 데이터 분석 및 머신러닝 모델 학습 과정에서 예기치 못한 문제를 초래할 수 있습니다. 결측치를 무시하거나 그대로 둘 경우, 통계 분석이나 머신러닝 알고리즘에서 예상치 못한 동작이 발생할 수 있습니다. 따라서 결측치 처리는 데이터 전처리의 중요한 단계 중 하나입니다.

 

info() 메서드 활용

info() 메서드는 데이터프레임의 각 열에 대한 요약 정보를 제공하며, 결측치의 존재 여부를 파악할 수 있습니다.

# info() 메서드로 결측치 확인
df.info()
isna() 또는 isnull() 메서드 활용
# isna() 또는 isnull() 메서드로 결측치 확인
df.isna()

isna() 또는 isnull() 메서드는 각 데이터프레임 요소에 대해 결측치 여부를 확인하는 불리언(Boolean) 데이터프레임을 반환합니다.

notna() 또는 notnull() 메서드 활용
# notna() 또는 notnull() 메서드로 결측치 확인
df.notna()

notna() 또는 notnull() 메서드는 각 데이터프레임 요소에 대해 결측치가 아닌 값을 확인하는 불리언(Boolean) 데이터프레임을 반환합니다

결측치 갯수 확인
# 결측치 갯수 확인
df.isna().sum()

isna().sum() 메서드는 각 열에 대한 결측치의 개수를 반환합니다.

 

결측치 제거
dropna() 메서드 활용

dropna() 메서드는 결측치를 제거하는 데에 사용되는 편리한 메서드입니다. 아래는 dropna() 메서드의 사용법에 대한 설명입니다.

  •  dropna() 메서드로 결측치 제거
  •  inplace=True: 원본 데이터프레임을 변경
  •  axis=0: 행 제거 (기본값) / axis=1: 열 제거
  •  subset=[]: 특정 열의 결측치만 제거
df.dropna(inplace=True)  # 모든 행에 대해 결측치가 있는 행을 제거

# 특정 열('column_name')에 대해 결측치가 있는 행만 제거하려면:
df.dropna(subset=['column_name'], inplace=True)

# 특정 여러 열에 대해 결측치가 있는 행만 제거하려면:
df.dropna(subset=['column1', 'column2'], inplace=True)

# 열을 기준으로 결측치를 제거하려면:
df.dropna(axis=1, inplace=True)

위 코드에서 inplace=True는 원본 데이터프레임을 변경하도록 지시하며, axis 매개변수를 사용하여 행 또는 열을 기준으로 결측치를 제거할 수 있습니다. 또한, subset 매개변수를 사용하여 특정 열에 대해서만 결측치를 제거할 수 있습니다.

 

결측치 채우기
특정 값으로 채우기
# value=0: 특정 값으로 채우기
df['Ozone'].fillna(value=0, inplace=True)

'Ozone' 열의 결측치를 0으로 채웁니다. 이 방법은 결측치를 특정 값으로 대체하는 가장 간단한 방법 중 하나입니다.

 

바로 앞의 값으로 변경 (Forward Fill)

# method='ffill': 바로 앞의 값으로 변경 (Forward Fill)
df['Ozone'].fillna(method='ffill', inplace=True)

위 코드는 'Ozone' 열의 결측치를 바로 앞의 값으로 채웁니다. 이는 앞선 유효한 값으로 결측치를 채우는 방법입니다.

 

바로 다음 값으로 변경 (Backward Fill)

# method='bfill': 바로 다음 값으로 변경 (Backward Fill)
df['Ozone'].fillna(method='bfill', inplace=True)

'Ozone' 열의 결측치를 바로 다음 값으로 채웁니다. 이는 다음 유효한 값으로 결측치를 채우는 방법입니다.

 

선형보간법으로 결측치 채우기

# method='bfill': 바로 다음 값으로 변경 (Backward Fill)
df['Ozone'].fillna(method='bfill', inplace=True)

선형보간법을 사용하여 'Ozone' 열의 결측치를 채웁니다. 선형보간법은 주어진 두 개의 데이터 포인트 사이에 있는 결측치를 직선 상의 값으로 채우는 방법입니다. 이는 연속적인 데이터에서 사용될 수 있습니다.