-
[Python] Pandas에서 NaN,NA 대체/제거하기: fillna, dropna코딩/파이썬 2023. 8. 4. 15:24반응형
Pandas로 데이터를 다루다 보면, 특정 셀의 정보가 NaN으로 표시될 때가 있습니다. 어떤 작업을 수행할 때, 이러한 결측치 데이터 때문에 작업 오류가 발생할 때가 많습니다. 이번 글에서는 Pandas에서 결측값을 대체하거나 제거하는 방법에 대해서 알아보도록 하겠습니다.
1. 결측값이란?
- 결측값 - NaN, NA, None ...
결측값이란 데이터에 존재해야 하지만, 어떤 이유로 누락되어 존재하지 않는 값을 의미합니다. Python에서는 주로 NaN(Not a Number)로 표현됩니다. 데이터에 결측값이 많을 경우, 데이터의 통계적 신뢰성이 떨어지고, 모델링에도 악영향을 끼치기 때문에 적절하게 처리해야 합니다.
2. Pandas의 결측값 처리 함수: fillna와 dropna
Pandas 라이브러리에서는 결측값을 다루기 위한 다양한 함수를 제공합니다. 여기서는 fillna와 dropna 두 가지 주요 함수를 중점적으로 살펴보겠습니다.
2.1. fillna
- fillna은 dataframe의 NaN 값을 특정 값으로 대체합니다.
fillna 함수는 결측값을 특정 값으로 대체하는데 사용됩니다. 아래의 형식을 따릅니다.
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
자세한 함수 설명은 아래 공식 페이지를 참고하세요.
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.fillna.html
아래는 fillna 함수의 간단한 사용 예제입니다. fillna를 사용하면 dataframe 내에 있는 NaN 값을 특정 값으로 대체할 수 있습니다.
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
2.2. Dropna
- 핵심 내용 요약....
dropna 함수는 결측값이 포함된 행이나 열을 삭제하는데 사용됩니다. 아래의 형식을 따릅니다.
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
상세한 함수 정의는 아래 공식 페이지를 참고하세요.
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dropna.html
아래는 dropna 함수의 간단한 사용 예제입니다. NaN이 포함된 행을 삭제합니다.
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
Pandas에서 제공하는 'fillna'와 'dropna' 함수를 통해 결측값을 적절히 처리함으로써 데이터의 통계적 신뢰성을 높이고 더 나은 분석 결과를 얻을 수 있습니다. 하지만 어떤 함수를 선택하고, 어떤 값을 사용할지는 해당 데이터와 분석 목표에 따라 달라질 수 있으므로 신중하게 결정해야 합니다.
https://smart-worker.tistory.com/61
반응형'코딩 > 파이썬' 카테고리의 다른 글
[Python] pandas 에 csv 파일 불러오기: pd.read_csv() (0) 2023.08.04 [Python] Pandas에서 결측치 보간하기 - interpolate 함수 이용법 (0) 2023.08.04 [Python] 초보자를 위한 cProfile로 코드 최적화하기 (0) 2023.08.01 [python] 딕셔너리에서 기본값 설정하기 (0) 2023.08.01 [Python] zip함수로 두 리스트의 데이터 엮어주기 (0) 2023.07.31