Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – IntervalArray에서 간격에 특정 값이 포함되어 있는지 요소별로 확인하는 방법

개요

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() 메서드를 활용하면 대량의 구간 데이터에서도 특정 값이 어느 구간에 속하는지 효율적으로 판별할 수 있습니다.