결측치(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' 열의 결측치를 채웁니다. 선형보간법은 주어진 두 개의 데이터 포인트 사이에 있는 결측치를 직선 상의 값으로 채우는 방법입니다. 이는 연속적인 데이터에서 사용될 수 있습니다.
'PYTHON > Pandas 판다스' 카테고리의 다른 글
[PYTHON] One-Hot Encoding - 가변수(Dummy Variable) 만들기 (0) | 2024.03.10 |
---|---|
[PYTHON] 데이터프레임 전처리 (병합, 결합) (0) | 2024.03.10 |
[PYTHON] 데이터프레임 전처리 (범주데이터 변경 및 생성) (0) | 2024.03.10 |
[PYTHON] 데이터프레임 전처리 (열 이름 변경, 추가, 삭제) (0) | 2024.03.10 |
[PYTHON] 데이터프레임 집계 (0) | 2024.03.10 |