Shonny Data

[Python] 결측치 제거 / Null값 제거(NaN, NA 대체) / dropna · fillna 본문

Sparta_coding_club/Python

[Python] 결측치 제거 / Null값 제거(NaN, NA 대체) / dropna · fillna

데이터분석쇼니 2024. 1. 24. 16:00

 

|  결측치 제거 

  • Pandas로 데이터를 다루다보면 특정 셀의 정보가 NaN으로 표시될 때가 있음 → 결측치 
  • 결측값 - NaN, NA, None...
  • 결측값이란 데이터에 존재해야 하지만 누락되어 존재하지 않는 값
    • NaN (Not a Number) 의 약어 
  • 결측값이 많을 경우 데이터의 통계적 신뢰성이 떨어지고 모델링에 악영향을 끼치기 때문에 전처리 필요 
    • dropna
    • fillna 

 

■  dropna 

  • dropna 함수는 결측값이 포함된 행이나 열을 삭제하는데 사용

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

  • axis : {0: index / 1: columns} 결측치 제거를 진행 할 레이블입니다.
  • how : {'any' : 존재하면 제거 / 'all' : 모두 결측치면 제거}
  • tresh : 결측값이 아닌 값이 몇 개 미만일 경우에만 적용시키는 인수 입니다.예를들어, tresh값이 3이라면 결측값이 아닌 값이 3개 미만일 경우에만 dropna메서드를 수행합니다.
  • subset : dropna메서드를 수행할 레이블을 지정합니다.
  • inplace : 원본을 변경할지의 여부입니다.
import pandas as pd
import numpy as np

# Sample DataFrame 생성
df = pd.DataFrame({
   'A': [1, 2, np.nan],
   'B': [5, np.nan, np.nan],
   'C': [1, 2, 3]
})

print(df)

# Output
     A    B  C
0  1.0  5.0  1
1  2.0  NaN  2
2  NaN  NaN  3

# 결측값이 있는 행 삭제
df.dropna()

# Output
     A    B  C
0  1.0  5.0  1

 

■  fillna

  • fillna 함수는 결측값을 특정 값으로 대체하는 데 사용

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)

  • value : 결측값을 대체할 값입니다. dict형태로도 가능합니다.
  • method : 결측값을 변경할 방식입니다.  (bfill - 아래값으로 변경 / ffill - 위값으로 변경)
  • axis : {0 : index / 1 : columns} fillna 메서드를 적용할 레이블입니다.
  • inplace : 원본을 변경할지 여부입니다. True일 경우 원본을 변경하게 됩니다.
  • limit : 결측값을 변경할 횟수입니다. 위에서부터 limit로 지정된 갯수만큼만 변경합니다.
  • downcast : 다운캐스트할지 여부입니다. downcast='infer'일 경우 float64 int64로 변경합니다.
import pandas as pd
import numpy as np

# Sample DataFrame 생성
df = pd.DataFrame({
   'A': [1, 2, np.nan],
   'B': [5, np.nan, np.nan],
   'C': [1, 2, 3]
})

print(df)

# Output
     A    B  C
0  1.0  5.0  1
1  2.0  NaN  2
2  NaN  NaN  3

# 결측값을 0으로 대체
df.fillna(0)

# Output
     A    B  C
0  1.0  5.0  1
1  2.0  0.0  2
2  0.0  0.0  3