5. 데이터 전처리의 모든 것 : 결측치 처리 (확인, 제거, 대체)

2024. 4. 18. 17:12·AI/데이터 전처리
반응형
import pandas as pd

# 예제 DataFrame 생성
data = {'A': [1, 2, None, 4],
        'B': [5, None, 7, 8],
        'C': [9, 10, 11, 12]}
df = pd.DataFrame(data)

# 결측치가 있는 행 제거
df_cleaned_rows = df.dropna(axis=0)

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

# 결측치가 있는 행 제거 결과 출력, 결과1
print("원본 데이터:\n", df)
print("\n결측치가 제거된 데이터:\n", df_cleaned_rows)

# 결측치가 있는 행 제거 결과 출력, 결과2
print("원본 데이터:\n", df)
print("\n결측치가 제거된 데이터:\n", df_cleaned_cols)

결측치는 데이터셋에서 값이 비어있거나 존재하지 않는 경우이며, Pandas에서는 NaN으로 표시됩니다.

결측치를 확인하고 다루는 몇 가지 방법을 설명하겠습니다.

 

결측치 갯수, 값 확인

 

[isna() 사용하기]

import pandas as pd

# 예제 데이터프레임 생성
data = {'A': [1, 2, None, 4],
        'B': [None, 5, 6, 7],
        'C': [8, 9, 10, 11]}
df = pd.DataFrame(data)

# 결측치 확인, 결과1
print(df.isna())

# 결측치 갯수 확인, 결과2
missing_count = df.isna().sum()
print(missing_count)

# 각 행에 대해 결측치가 있는 것들만 보기, 결과3
rows_with_missing_values = df[df.isna().any(axis=1)]
print("결측치가 있는 행:")
print(rows_with_missing_values)

 

[결과1]

       A      B      C
0  False   True  False
1  False  False  False
2   True  False  False
3  False  False  False

 

[결과2]

A    1
B    1
C    0
dtype: int64

 

[결과3]

결측치가 있는 행:
     A    B   C
0  1.0  NaN   8
2  NaN  6.0  10

 


결측치 처리 (제거)

 

.dropna()

import pandas as pd

# 예제 DataFrame 생성
data = {'A': [1, 2, None, 4],
        'B': [5, None, 7, 8],
        'C': [9, 10, 11, 12]}
df = pd.DataFrame(data)

# 결측치가 있는 행 제거
df_cleaned_rows = df.dropna(axis=0)

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

# 결측치가 있는 행 제거 결과 출력, 결과1
print("원본 데이터:\n", df)
print("\n결측치가 제거된 데이터(행 제거):\n", df_cleaned_rows)

# 결측치가 있는 열 제거 결과 출력, 결과2
print("\n원본 데이터:\n", df)
print("\n결측치가 제거된 데이터(열 제거):\n", df_cleaned_cols)

 

결과1

원본 데이터:
      A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
2  NaN  7.0  11
3  4.0  8.0  12

결측치가 제거된 데이터(행 제거):
      A    B   C
0  1.0  5.0   9
3  4.0  8.0  12

 

결과2

원본 데이터:
      A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
2  NaN  7.0  11
3  4.0  8.0  12

결측치가 제거된 데이터(열 제거):
     C
0   9
1  10
2  11
3  12

결측치 처리 (대체)

 

1. 평균 또는 중앙값 대체:
수치형 변수의 결측치를 대체할 때 사용됩니다.
해당 열의 평균 또는 중앙값을 계산하여 결측치를 대체합니다.

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

 

2. 최빈값 대체:
범주형 변수의 결측치를 대체할 때 사용됩니다.
해당 열의 최빈값(가장 자주 등장하는 값)을 결측치에 대체합니다.

# 최빈값으로 결측치 대체
df_filled_mode = df.fillna(df.mode().iloc[0])

 

3. 사전에 정의된 값 사용:
결측치를 특정한 값으로 대체할 때 사용됩니다.
예를 들어, 0 또는 "Unknown"과 같은 사전에 정의된 값으로 결측치를 대체합니다.

# 특정 값으로 결측치 대체
df_filled_custom = df.fillna(0)  # 또는 df.fillna("Unknown")


4. 보간 (Interpolation):
시계열 데이터에서 사용되며, 결측치를 주변 데이터의 값에 기반하여 근사적으로 대체합니다.

# 보간을 사용하여 결측치 대체
df_interpolated = df.interpolate(method='linear')

 

*.interpolate()의 method 파라미터 설명

더보기

linear (default):
주어진 두 데이터 포인트 사이의 값들을 선형적으로 보간합니다.(인덱스 순서대로)
time:
시간에 대해 선형적으로 보간하면서 datetime 인덱스가 있는 데이터 프레임에서만 사용됩니다.
index:
인덱스의 값을 기반으로 선형 보간합니다.
values:
인덱스 값이 아닌 데이터 자체를 기준으로 선형 보간합니다.
polynomial:
주어진 데이터 포인트 사이를 다항식으로 보간합니다. order 매개변수를 사용하여 다항식의 차수를 지정할 수 있습니다.
spline:
데이터를 근사하는 스플라인 곡선을 사용하여 보간합니다.
barycentric:
데이터를 바리센트릭 가중치를 사용하여 보간합니다.
krogh:
불균일한 간격의 시계열 데이터에서 사용됩니다.
nearest:
가장 가까운 이웃의 값을 사용하여 보간합니다.

 

5. 머신러닝 모델을 사용한 대체:

머신러닝 모델을 사용하여 결측치를 예측하고 대체하는 방법도 있습니다.

회귀 모델, KNN 등의 모델을 활용할 수 있습니다.

반응형
저작자표시 비영리 변경금지

'AI > 데이터 전처리' 카테고리의 다른 글

[데이터 분석] Pandas Cheeting Sheet : 데이터(DataFrame) 전처리  (0) 2024.04.19
5. 데이터 전처리의 모든 것 : DataFrame 파일 입출력  (1) 2024.04.18
1. CRISP으로 둘러보는 데이터 분석  (0) 2024.04.17
'AI/데이터 전처리' 카테고리의 다른 글
  • [데이터 분석] Pandas Cheeting Sheet : 데이터(DataFrame) 전처리
  • 5. 데이터 전처리의 모든 것 : DataFrame 파일 입출력
  • 1. CRISP으로 둘러보는 데이터 분석
코코도롱
코코도롱
    반응형
  • 코코도롱
    도롱이의 전자공학소
    코코도롱
  • 전체
    오늘
    어제
    • 분류 전체보기 (54) N
      • AI (11) N
        • 데이터 전처리 (4)
        • 머신러닝 (2) N
        • 딥러닝 (0)
        • (PJT)음성 화자 분류 (4)
      • SW (37)
        • C++ (9)
        • 면접을 위한 CS 전공지식 노트 (24)
        • Django+Vue.js (0)
        • 이런저런 개발이야기 (1)
        • 갑자기 C코테를 봐야할때 (2)
        • RPI5 프로젝트 (1)
      • ESG (2)
        • 내가 쓰는 Assay (1)
        • 뉴스 스크랩 (1)
      • 반도체 (4)
        • 반도체 (3)
        • 슬기로운 학부생활 (1)
        • 회로 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    공백포함입력받기
    반도체 소자 공학
    CS지식
    보고서 수식
    데이터분석 #머신러닝 #딥러닝 #데이터사이언스 #알고리즘 #데이터전처리
    c io
    페이징 기법
    홉바이홉통신
    면접을 위한 cs전공지식 노트
    반도체 공학
    정리본
    입출력관리
    면접을 위한 CS 전공지식 노트
    파일입출력 #DataFrame불러오기
    전공 지식
    요약본
    데이터분석 #데이터전처리 #결측치 #머신러닝 #딥러닝 #Pandas #DataFrame
    반도체 물성
    ESG
    운영체제
    LAN
    c언어 입출력
    os구조
    메시지큐
    ios7계층
    word 수식
    MySQL
    홉바이홉
    데이터전처리 #데이터분석 #딥러닝 #머신러닝 #Pandas #Numpy #Python
    CRISP #CRISP-DM #데이터마이닝 #데이터분석 #데이터 #머신러닝 #딥러닝 #데이터전처리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코코도롱
5. 데이터 전처리의 모든 것 : 결측치 처리 (확인, 제거, 대체)
상단으로

티스토리툴바