데이터 분석을 하다 보면 시리즈(Series)에 담긴 값들 중에서 특정 범위에 해당하는 요소만 골라내야 하는 경우가 자주 발생합니다. 이번 글에서는 파이썬의 pandas 라이브러리를 활용해 10 이상 15 이하인 요소만 필터링하여 출력하는 프로그램을 두 가지 방법으로 구현해 보겠습니다.
문제 정의
입력 — 다음과 같은 시리즈가 있다고 가정해 보겠습니다.
0 12 1 13 2 15 3 20 4 19 5 18 6 11
출력 — 10부터 15 사이(경계값 포함)에 있는 요소만 추출한 결과는 다음과 같습니다.
0 12 1 13 2 15 6 11
방법 1 — between() 메서드 활용
pandas 시리즈는 범위 비교를 한 번에 처리할 수 있는 between() 메서드를 기본적으로 제공합니다. 시작값과 끝값을 인자로 넘기면 경계값을 포함한 범위 조건을 불린(Boolean) 마스크 형태로 반환하므로, 이를 인덱싱에 그대로 사용하면 원하는 결과를 손쉽게 얻을 수 있습니다.
예제 코드
import pandas as pd l = [12, 13, 15, 20, 19, 18, 11] data = pd.Series(l) print(data[data.between(10, 15)])
실행 결과
0 12 1 13 2 15 6 11
방법 2 — 반복문과 isin() 메서드 활용
조건 로직을 직접 제어하고 싶다면 for 반복문을 사용할 수도 있습니다. 전체 흐름은 다음과 같습니다.
- 시리즈를 정의합니다.
- 조건에 맞는 값을 담을 빈 리스트를 생성합니다.
- for 루프로 모든 요소를 하나씩 순회하며, 값이 10보다 크거나 같고 15보다 작거나 같은지 검사한 뒤 조건을 만족하는 값을 리스트에 추가합니다.
- 마지막으로
isin()메서드를 사용해 리스트에 담긴 값들과 일치하는 시리즈 요소만 출력합니다.
예제 코드
import pandas as pd
l = [12, 13, 15, 20, 19, 18, 11]
data = pd.Series(l)
ls = []
for i in range(len(data)):
if data[i] >= 10 and data[i] <= 15:
ls.append(data[i])
print(data[data.isin(ls)])
실행 결과
0 12 1 13 2 15 6 11
마무리
두 방법 모두 동일한 결과를 반환하지만, between()을 사용하는 방식이 코드가 훨씬 간결하고 가독성이 좋아 실무에서 널리 쓰입니다. 반복문 방식은 조건을 세분화하거나 복잡한 필터링 로직을 추가해야 할 때 유용하게 활용할 수 있으니, 상황에 맞게 선택하시기 바랍니다.