isna vs isnull
in Til on Til
- 차이:
isna와isnull은 사실상 동일- 둘 다 결측치를 확인하기 위한 메서드이며, Pandas에서는
isnull이 내부적으로isna를 호출하는 방식으로 구현
- 선택 기준:
isna는 Pandas에서 더 직관적으로 이해할 수 있는 이름으로 추가된 함수isnull은 오래된 코드나,scikit-learn과 같은 라이브러리에서의 사용과 호환성을 위해 여전히 널리 사용2. 결측치 처리 방법
(1) 결측치 확인
# 데이터프레임의 모든 결측치를 True/False로 반환 df.isna() # 또는 df.isnull() # 결측치의 개수 확인 df.isna().sum() # 각 열에서 결측치 개수 df.isna().sum(axis=1) # 각 행에서 결측치 개수(2) 결측치 포함 행/열 찾기
# 결측치가 하나라도 있는 행/열 확인 indices_with_nan = df.isnull().sum(axis=1) > 0 print("Rows with NaN:", indices_with_nan)(3) 결측치 채우기
fillna(value)- 결측치를 특정 값으로 채움.
df.fillna(0, inplace=True) # 모든 결측치를 0으로 대체
- 결측치를 특정 값으로 채움.
ffill/bfill- 결측치를 앞 또는 뒤 값으로 채움.
df.fillna(method='ffill', inplace=True) # 이전 값으로 채움 df.fillna(method='bfill', inplace=True) # 다음 값으로 채움(4) 결측치 포함 행/열 제거
- 결측치를 앞 또는 뒤 값으로 채움.
dropnadf.dropna(axis=0, inplace=True) # 결측치 포함 행 제거 df.dropna(axis=1, inplace=True) # 결측치 포함 열 제거(5) 특정 조건 확인
- 특정 열에서 결측치가 있는 행 필터링:
OHLCV_data[OHLCV_data["Change"].isna() == True]3. 결측치 처리를 위한 팁
- 모든 열의 Non-Null 개수가 같지 않다면, 특정 열에 결측치가 포함되어 있을 가능성
df.info() # Non-Null 개수 확인4. 장단점 비교
| 메서드 | 장점 | 단점 | | — | — | — | |
isna,isnull| 직관적이고 Pandas에서 기본적으로 지원. | 대규모 데이터에서는 계산 비용이 증가할 수 있음. | |fillna| 결측치를 다른 값으로 쉽게 대체 가능 (0, 평균, 중위값 등). | 적절하지 않은 값으로 채우면 통계적 왜곡 발생 가능. | |dropna| 결측치 있는 데이터를 깔끔하게 제거. | 데이터가 많이 손실될 수 있음. | |ffill,bfill| 시계열 데이터에서 결측치를 시간 흐름에 따라 쉽게 채움. | 앞뒤 값으로 채워야 하는 데이터가 아닌 경우, 의미 없는 값으로 대체될 수 있음. | |indices_with_nan| 결측치가 있는 행/열의 인덱스를 명확히 알 수 있음. | 결과를 조작하거나 다른 메서드로 결합하는 과정이 필요할 수 있음. | —5. 결측치 처리 전략
- 결측치가 많지 않다면
dropna사용. - 시계열 데이터는
ffill/bfill사용. - 통계적 분석 시 평균/중위값으로 채우기 (
fillna). - 머신러닝 모델 적용 전에는 결측치 처리 후 이상치 확인 권장.