[Pandas] 파이썬 - 데이터 결측치 처리 4가지 방법

2024. 5. 14. 14:24·Python/pandas
목차
  1. 1. 결측치란 무엇인가?
  2. 2. 결측치를 처리해야 하는 이유
  3. 3. 판다스를 이용한 결측치 처리 예시 (출력 결과 포함)
  4. 3-1. 결측치 확인하기 
  5. 3-2. 결측치 제거하기
  6. 3-3. 결측치 대체하기
  7. 3-4 결측치 보간하기
  8. 3-5. 결측치를 다루기 위한 조건부 대체

1. 결측치란 무엇인가?

결측치는 데이터 세트에서 값이 누락된 항목을 말합니다. 데이터 입력 과정에서 발생할 수도 있고, 데이터 수집 중 오류로 인해 발생할 수도 있습니다. 예를 들어, 설문 조사에서 응답자가 특정 질문에 답을 하지 않았거나, 기계적 오류로 인해 센서 데이터가 누락된 경우 등이 있습니다.

2. 결측치를 처리해야 하는 이유

결측치를 처리하지 않고 방치할 경우, 데이터 분석이나 머신러닝 모델의 성능에 부정적인 영향을 미칠 수 있습니다. 많은 알고리즘은 결측치가 있는 데이터를 제대로 처리하지 못하며, 분석 결과의 신뢰성이 떨어질 수 있습니다. 따라서 결측치를 적절히 처리하는 것은 데이터 분석 과정에서 중요한 단계입니다.

3. 판다스를 이용한 결측치 처리 예시 (출력 결과 포함)

3-1. 결측치 확인하기 

Python
import pandas as pd
import numpy as np

# 데이터 프레임 생성
data = {'이름': ['김철수', '이영희', '박지성', np.nan],
        '나이': [24, np.nan, 29, 22],
        '성별': ['남', '여', np.nan, '남']}
df = pd.DataFrame(data)

# 결측치 확인
print(df.isnull())

출력값 

Python
      이름     나이     성별
0  False  False  False
1  False   True  False
2  False  False   True
3   True  False  False

3-2. 결측치 제거하기

Python
# 결측치가 있는 행 제거
df_dropped_rows = df.dropna()

# 결측치가 있는 열 제거
df_dropped_columns = df.dropna(axis=1)

print("행 제거 후:\n", df_dropped_rows)
print("열 제거 후:\n", df_dropped_columns)

출력값 

Code
행 제거 후:
이름 나이 성별
0 김철수  24.0  남

열 제거 후:
이름
0 김철수
1 이영희
2 박지성
3  NaN

3-3. 결측치 대체하기

Python
# 결측치를 평균값으로 대체
df_filled_mean = df.fillna(df.mean())

# 결측치를 특정 값으로 대체
df_filled_specific = df.fillna({'이름': '정보 없음', '나이': 30, '성별': '미정'})

print("평균값으로 대체:\n", df_filled_mean)
print("특정 값으로 대체:\n", df_filled_specific)

출력값 

Code
평균값으로 대체:
     이름    나이 성별
0 김철수  24.0  남
1 이영희  25.0  여
2 박지성  29.0  미정
3  NaN  22.0  남

특정 값으로 대체:
        이름    나이 성별
0 김철수  24.0  남
1 이영희  30.0  여
2 박지성  29.0  미정
3 정보 없음  22.0  남

3-4 결측치 보간하기

선형 보간(linear interpolation)은 두 점 사이의 결측치를 추정하는 방법 중 하나로, 두 점을 연결하는 직선의 경향성을 이용해 중간에 놓인 결측값을 추정합니다. 즉, 결측치의 값이 그 주변 값들과 선형적인 관계를 가지고 있다고 가정하고 그 관계를 바탕으로 결측치를 채우는 기법입니다.

선형 보간은 특히 시간 순서에 따라 연속적으로 증가하거나 감소하는 데이터에서 자주 사용됩니다. 예를 들어, 시간에 따른 온도 변화 데이터에서 특정 시간의 온도 데이터가 누락되었다면, 이전 시간과 다음 시간의 온도 데이터를 바탕으로 결측된 시간의 온도를 선형적으로 추정할 수 있습니다.

판다스에서는 interpolate() 메서드를 사용하여 다양한 방법 중 하나인 선형 보간을 적용할 수 있습니다. 다음은 간단한 예시입니다

Python
import pandas as pd

# 데이터 프레임 생성
data = {'시간': [1, 2, 3, 4, 5],
        '온도': [22, None, 24, None, 26]}
df = pd.DataFrame(data)

# 선형 보간을 이용한 결측치 처리
df['온도'].interpolate(method='linear', inplace=True)

df

선형 보간을 적용한 결과, 온도 열의 결측치가 이전 값과 다음 값 사이의 선형적 증가율을 반영하여 채워졌습니다. 구체적으로는 다음과 같습니다.

  • 2번 시간의 온도가 22에서 24로 증가하는 경향을 따라, 결측치는 23으로 추정되었습니다.
  • 4번 시간의 온도는 24에서 26으로 증가하는 경향을 따라, 결측치는 25로 추정되었습니다.

출력값 

Code
   시간    온도
0   1  22.0
1   2  23.0
2   3  24.0
3   4  25.0
4   5  26.0

3-5. 결측치를 다루기 위한 조건부 대체

Bash
# 성별을 기준으로 나이의 평균값으로 결측치 대체
df['나이'] = df.groupby('성별')['나이'].transform(lambda x: x.fillna(x.mean()))

print("조건부 평균값으로 대체:\n", df)

출력값 

Code
조건부 평균값으로 대체:
     이름    나이 성별
0 김철수  24.0  남
1 이영희  30.0  여
2 박지성  29.0  NaN
3  NaN  22.0  남

이렇게 판다스를 활용한 결측치 처리 방법을 구체적인 예시와 함께 출력 결과로 확인할 수 있습니다. 판다스의 공식 홈페이지에서 더 많은 정보를 얻을 수 있습니다. 

저작자표시 비영리 변경금지 (새창열림)
  1. 1. 결측치란 무엇인가?
  2. 2. 결측치를 처리해야 하는 이유
  3. 3. 판다스를 이용한 결측치 처리 예시 (출력 결과 포함)
  4. 3-1. 결측치 확인하기 
  5. 3-2. 결측치 제거하기
  6. 3-3. 결측치 대체하기
  7. 3-4 결측치 보간하기
  8. 3-5. 결측치를 다루기 위한 조건부 대체
'Python/pandas' 카테고리의 다른 글
  • [Pandas] 파이썬 map, apply, applymap 차이점 및 활용
  • [Pandas] 파이썬 피벗 테이블과 크로스탭 활용 방법
  • [Pandas] 판다스 Cut 함수로 데이터 구간 나누기(설명 및 예시)
  • 판다스 Stack 함수로 데이터 만들기
hyunicecream
hyunicecream
안녕하세요. 여러가지 정보를 통해 조금이나마 도움이 되고자 시작하게 되었습니다.
  • hyunicecream
    Café
    hyunicecream
  • 홈
  • 포스팅 카테고리

    • 분류 전체보기
      • 생성형 AI
        • ChatGPT
        • Claude AI
        • MS Copilot
        • Perplexity
        • 생성형 AI 정보
        • 프롬프트 작성 가이드
        • AI 활용기
      • Notion
      • 업무 생산성
      • Python
        • pandas
      • 머신러닝
      • 딥러닝
      • Terminal
      • SQL
        • Postgre SQL
      • 여행정보
        • 국내여행
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
hyunicecream
[Pandas] 파이썬 - 데이터 결측치 처리 4가지 방법

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.