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()
까지 다양한 상황에 맞는 조건 선택 방법을 익히면 실전 분석에서 훨씬 효율적으로 데이터를 다룰 수 있습니다.
'Pandas' 카테고리의 다른 글
[Pandas] 결측치 탐색과 처리 함수 (isna, fillna, dropna 등) (0) | 2025.04.20 |
---|---|
[Pandas] 열 추가·삭제·변경 함수 정리 (assign, drop, rename,insert) (0) | 2025.04.17 |
[Pandas] 데이터 선택과 인덱싱 함수 정리 (loc, iloc, at, iat 등) (0) | 2025.04.16 |
[Pandas] 데이터프레임 생성 및 확인 함수 정리 (pd.DataFrame, head(), info(), tail(), describe()) (0) | 2025.04.15 |