본문 바로가기
Pandas

[Pandas] 데이터 필터링과 조건 선택 함수 정리 (boolean indexing, query, isin 등)

by PredictLab | 데이터 예측 연구소 2025. 4. 16.

1. 개요

데이터 분석에서 가장 중요한 작업 중 하나는 조건에 맞는 데이터를 선별해내는 것입니다. Pandas는 다양한 방식으로 조건 필터링을 지원하며, 이번 글에서는 Boolean 인덱싱, query(), isin(), between(), duplicated() 등을 정리해봅니다.

2. 내용

2-1. Boolean 인덱싱

Boolean 인덱싱은 조건식을 만족하는 행만 선택하는 가장 기본적인 방법입니다. df[조건] 형식으로 작성합니다.

import pandas as pd

df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40]
})

# 나이가 30 이상인 사람 필터링
print(df[df['Age'] >= 30])
      Name  Age
1      Bob   30
2  Charlie   35
3    David   40

2-2. query()

query() 함수는 문자열로 조건을 작성해 데이터를 필터링합니다. 복잡한 조건을 가독성 좋게 표현할 수 있습니다.

# 나이가 30 이상이면서 이름이 'Bob'이 아닌 경우
print(df.query("Age >= 30 and Name != 'Bob'"))
      Name  Age
2  Charlie   35
3    David   40

2-3. isin()

isin() 함수는 특정 값들이 포함되어 있는지를 기준으로 데이터를 필터링할 때 사용합니다. 리스트 형태의 조건에 적합합니다.

print(df[df['Name'].isin(['Alice', 'David'])])
    Name  Age
0  Alice   25
3  David   40

2-4. between()

between() 함수는 특정 범위 내에 있는 값을 필터링할 때 사용합니다. 기본적으로 양쪽 경계값을 포함합니다.

print(df[df['Age'].between(30, 35)])
      Name  Age
1      Bob   30
2  Charlie   35

2-5. duplicated()

duplicated() 함수는 중복된 행을 확인할 수 있으며, keep 인자를 통해 첫 번째 혹은 마지막 값을 제외할 수 있습니다.

df2 = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Alice', 'David'],
    'Age': [25, 30, 25, 40]
})

print(df2[df2.duplicated()])
    Name  Age
2  Alice   25

3. 결론

이번 글에서는 Pandas에서 데이터를 필터링하고 조건을 지정하는 다양한 방법들을 정리했습니다. Boolean 인덱싱부터 query(), isin(), between(), duplicated()까지 다양한 상황에 맞는 조건 선택 방법을 익히면 실전 분석에서 훨씬 효율적으로 데이터를 다룰 수 있습니다.