Pandas에서 조건부 필터링 (Conditional Filtering)
데이터 분석에서 특정 조건을 만족하는 데이터를 추출하는 작업은 매우 중요합니다. Pandas에서는 간단한 문법을 통해 조건을 기반으로 원하는 데이터를 필터링할 수 있습니다. 이번 포스팅에서는 df[df['column'] > value]
형태의 조건부 필터링 방법과 다양한 활용 예제를 살펴보겠습니다.
1. 기본적인 조건부 필터링
Pandas에서는 특정 열(column)의 값을 기준으로 데이터 프레임을 필터링할 수 있습니다. 가장 기본적인 방법은 아래와 같습니다.
import pandas as pd
# 예제 데이터 생성
data = {
'이름': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'나이': [25, 30, 35, 40, 45],
'점수': [85, 90, 95, 88, 76]
}
# DataFrame 생성
df = pd.DataFrame(data)
# '나이'가 30 이상인 데이터 필터링
filtered_df = df[df['나이'] >= 30]
print(filtered_df)
실행 결과
이름 나이 점수
1 Bob 30 90
2 Charlie 35 95
3 David 40 88
4 Eve 45 76
위 코드에서 df['나이'] >= 30
조건을 만족하는 행만 필터링하여 새로운 데이터 프레임을 생성하였습니다.
2. 여러 조건을 활용한 필터링
&
(AND) 연산자와 |
(OR) 연산자를 사용하여 여러 조건을 조합할 수도 있습니다.
2.1 AND 조건 (&
)
# '나이'가 30 이상이고, '점수'가 90 이상인 데이터 필터링
filtered_df = df[(df['나이'] >= 30) & (df['점수'] >= 90)]
print(filtered_df)
실행 결과
이름 나이 점수
2 Charlie 35 95
위 코드에서 df['나이'] >= 30
와 df['점수'] >= 90
조건을 동시에 만족하는 데이터를 필터링하였습니다.
2.2 OR 조건 (|
)
# '나이'가 30 이상이거나, '점수'가 90 이상인 데이터 필터링
filtered_df = df[(df['나이'] >= 30) | (df['점수'] >= 90)]
print(filtered_df)
실행 결과
이름 나이 점수
1 Bob 30 90
2 Charlie 35 95
3 David 40 88
3. 특정 값이 포함된 데이터 필터링 (isin
활용)
특정 값 목록에 포함된 행만 필터링하려면 isin()
메서드를 사용할 수 있습니다.
# 특정 이름을 가진 데이터 필터링
filtered_df = df[df['이름'].isin(['Alice', 'Charlie'])]
print(filtered_df)
실행 결과
이름 나이 점수
0 Alice 25 85
2 Charlie 35 95
4. 특정 값이 포함되지 않은 데이터 필터링 (~isin
활용)
isin()
을 반대로 적용하려면 ~
연산자를 사용하면 됩니다.
# 특정 이름을 제외한 데이터 필터링
filtered_df = df[~df['이름'].isin(['Alice', 'Charlie'])]
print(filtered_df)
실행 결과
이름 나이 점수
1 Bob 30 90
3 David 40 88
4 Eve 45 76
5. 문자열 조건 필터링 (str.contains
활용)
문자열 데이터를 필터링할 때 특정 문자열을 포함하는 데이터를 찾을 수 있습니다.
# '이름'에 'a'가 포함된 데이터 필터링 (대소문자 구분 X)
filtered_df = df[df['이름'].str.contains('a', case=False)]
print(filtered_df)
실행 결과
이름 나이 점수
2 Charlie 35 95
3 David 40 88
위 코드에서 str.contains('a', case=False)
를 사용하여 '이름' 열에서 'a'가 포함된 데이터를 필터링하였습니다.
6. 조건을 만족하지 않는 데이터 필터링 (~
연산자 활용)
특정 조건을 만족하지 않는 데이터를 필터링하려면 ~
연산자를 사용할 수 있습니다.
# '점수'가 90 미만인 데이터 필터링
filtered_df = df[~(df['점수'] >= 90)]
print(filtered_df)
실행 결과
이름 나이 점수
0 Alice 25 85
3 David 40 88
4 Eve 45 76
7. query()
메서드를 활용한 조건부 필터링
Pandas의 query()
메서드를 사용하면 보다 직관적인 방식으로 필터링을 수행할 수 있습니다.
# '나이'가 30 이상인 데이터 필터링
filtered_df = df.query("나이 >= 30")
print(filtered_df)
실행 결과
이름 나이 점수
1 Bob 30 90
2 Charlie 35 95
3 David 40 88
4 Eve 45 76
query()
메서드는 가독성이 높아 여러 개의 필터링 조건을 쉽게 적용할 수 있습니다.
마무리
이번 포스팅에서는 Pandas에서 조건을 기반으로 데이터를 필터링하는 다양한 방법을 살펴보았습니다.
df[df['column'] > value]
기본적인 필터링 방법&
,|
연산자를 활용한 여러 조건 필터링isin()
을 활용한 특정 값 포함 여부 필터링str.contains()
을 활용한 문자열 검색 필터링~
연산자를 활용한 조건 부정 필터링query()
메서드를 활용한 직관적인 필터링
데이터 분석을 진행할 때 필터링 기능을 잘 활용하면 원하는 데이터를 효과적으로 추출할 수 있습니다. 다양한 조건을 조합하여 더욱 복잡한 데이터 분석을 수행해 보시길 바랍니다.
'Python > Pandas' 카테고리의 다른 글
Pandas 그룹화(groupby()) 및 집계 함수(agg(), mean(), sum()) (0) | 2025.10.12 |
---|---|
Pandas 다중 인덱스 사용 (set_index(), reset_index()) (0) | 2025.10.11 |
Pandas에서 행과 열 선택: loc[], iloc[], at[], iat[] (0) | 2025.10.09 |
Pandas 데이터 타입 변환 (astype()) - Pandas 데이터 변환과 가공 (0) | 2025.10.08 |
Pandas 날짜 데이터 처리 (to_datetime(), dt 속성 활용) (0) | 2025.10.07 |