개요
Pandas의 IntervalIndex.is_empty 속성을 사용하면 특정 구간(interval)이 비어 있는지 여부를 손쉽게 확인할 수 있습니다. 이 속성은 구간의 시작값과 끝값을 비교하여 해당 구간에 실제 요소가 포함되어 있는지 판단하며, 결과는 불리언(Boolean) 배열로 반환됩니다.
특히 결측치(NaN)가 포함된 구간의 경우 주의할 점이 있습니다. 시작값과 끝값이 모두 NaN이면 구간의 길이를 계산할 수 없기 때문에, is_empty는 해당 구간을 비어 있지 않은 것으로 처리하고 False를 반환합니다.
필요한 라이브러리 가져오기
먼저 예제에 필요한 pandas와 numpy 라이브러리를 임포트합니다.
import pandas as pd import numpy as np
NaN 값을 가진 IntervalIndex 생성하기
pd.IntervalIndex.from_arrays() 메서드를 사용하면 왼쪽 경계값과 오른쪽 경계값 배열로부터 IntervalIndex를 만들 수 있습니다. 아래 예제에서는 두 구간의 경계값을 모두 NaN으로 지정했습니다.
interval = pd.IntervalIndex.from_arrays([np.nan, np.nan], [np.nan, np.nan])
생성된 IntervalIndex 확인하기
생성된 IntervalIndex를 출력하여 내용을 확인합니다.
print("IntervalIndex...\n", interval)구간이 비어 있는지 검사하기
is_empty 속성을 호출하여 결측치가 포함된 구간이 비어 있는지 여부를 확인합니다.
print("\nIs the interval empty?\n", interval.is_empty)전체 예제 코드
지금까지의 내용을 하나의 완전한 코드로 정리하면 다음과 같습니다.
import pandas as pd
import numpy as np
# NaN 값을 가진 IntervalIndex 생성
interval = pd.IntervalIndex.from_arrays([np.nan, np.nan], [np.nan, np.nan])
# IntervalIndex 출력
print("IntervalIndex...\n", interval)
# 구간의 길이(length) 출력
print("\nIntervalIndex length...\n", interval.length)
# 결측치가 포함된 구간이 비어 있는지 확인
print("\nIs the interval empty?\n", interval.is_empty)실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
IntervalIndex... IntervalIndex([nan, nan], dtype='interval[float64, right]') IntervalIndex length... Float64Index([nan, nan], dtype='float64') Is the interval empty? [False False]
결과 해석
출력 결과에서 알 수 있듯이, 경계값이 모두 NaN인 구간의 length 역시 NaN으로 계산됩니다. 이는 구간의 폭(끝값 − 시작값)을 산술적으로 구할 수 없기 때문입니다. 그리고 is_empty는 각 구간에 대해 [False, False]를 반환합니다.
즉, Pandas에서는 결측치로 인해 구간의 비움 여부를 명확히 판단할 수 없는 경우, 해당 구간을 빈(empty) 구간으로 간주하지 않고 False를 반환합니다. 반면, 시작값과 끝값이 같은 일반적인 구간(예: (3, 3])은 실제로 어떤 값도 포함하지 않으므로 True가 반환됩니다. 이러한 동작 방식을 이해해두면 결측 데이터가 포함된 구간 분석 시 혼란을 피할 수 있습니다.