개요
Pandas의 IntervalArray.contains() 메서드를 사용하면 배열에 포함된 각 구간(Interval)이 특정 값을 가지고 있는지 요소별(elementwise)로 확인할 수 있습니다. 이 메서드는 각 구간에 대해 값이 포함되어 있으면 True, 그렇지 않으면 False를 담은 불리언(Boolean) 배열을 반환합니다.
이 글에서는 IntervalArray를 생성하고, contains() 메서드로 특정 값의 포함 여부를 확인하는 과정을 단계별로 살펴보겠습니다.
1. 필요한 라이브러리 임포트
가장 먼저 pandas 라이브러리를 임포트합니다.
import pandas as pd
2. IntervalArray 생성
from_breaks() 메서드를 사용하면 경계값(breaks) 리스트로부터 새로운 IntervalArray를 만들 수 있습니다. 아래 예제에서는 0부터 5까지의 숫자를 경계로 하여 총 5개의 구간을 생성합니다.
array = pd.arrays.IntervalArray.from_breaks([0, 1, 2, 3, 4, 5])
생성된 구간들을 출력해 확인해 보겠습니다.
print("Our IntervalArray...\n", array)3. 특정 값 포함 여부 확인
contains() 메서드에 확인하고자 하는 값을 인자로 전달하면, 각 구간이 해당 값을 포함하는지 여부가 반환됩니다.
print("\nDoes the Intervals contain the value? \n", array.contains(3.5))전체 예제 코드
아래는 위 내용을 모두 포함한 완전한 코드입니다. 참고로 IntervalArray에서 제공하는 다양한 속성(length, mid, right 등)도 함께 출력하여 구간 정보를 자세히 살펴봅니다.
import pandas as pd
# 경계값 리스트로부터 새로운 IntervalArray 생성
array = pd.arrays.IntervalArray.from_breaks([0, 1, 2, 3, 4, 5])
# IntervalArray 출력
print("Our IntervalArray...\n", array)
# IntervalArray의 길이 확인
# IntervalArray 내 각 구간의 길이를 나타내는 Index를 반환합니다.
print("\nOur IntervalArray length...\n", array.length)
# IntervalArray 내 각 구간의 중간점(midpoint)을 Index로 반환
print("\nThe midpoint of each interval in the IntervalArray...\n", array.mid)
# 각 구간의 오른쪽 끝점(right endpoint)을 Index로 반환
print("\nThe right endpoints of each Interval in the IntervalArray as an Index...\n", array.right)
# 각 구간이 값 3.5를 포함하는지 확인
print("\nDoes the Intervals contain the value? \n", array.contains(3.5))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Our IntervalArray... <IntervalArray> [(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]] Length: 5, dtype: interval[int64, right] Our IntervalArray length... Int64Index([1, 1, 1, 1, 1], dtype='int64') The midpoint of each interval in the IntervalArray... Float64Index([0.5, 1.5, 2.5, 3.5, 4.5], dtype='float64') The right endpoints of each Interval in the IntervalArray as an Index... Int64Index([1, 2, 3, 4, 5], dtype='int64') Does the Intervals contain the value? [False False False True False]
결과 해석
실행 결과를 살펴보면 다음과 같은 의미를 알 수 있습니다.
- 구간 생성: [0, 1], (1, 2], (2, 3], (3, 4], (4, 5] 형태의 5개 구간이 생성되었습니다. 기본 설정(closed='right')에서는 왼쪽 끝은 제외되고 오른쪽 끝은 포함됩니다.
- length: 각 구간의 길이가 모두 1임을 보여줍니다.
- mid: 각 구간의 중간점인 0.5, 1.5, 2.5, 3.5, 4.5가 반환됩니다.
- right: 각 구간의 오른쪽 끝점인 1, 2, 3, 4, 5가 반환됩니다.
- contains(3.5): 값 3.5는 세 번째 구간인 (3, 4]에만 포함되므로, 네 번째 위치만 True인 [False False False True False]가 반환됩니다.
이처럼 contains() 메서드를 활용하면 대량의 구간 데이터에서도 특정 값이 어느 구간에 속하는지 효율적으로 판별할 수 있습니다.