[Pandas] 조건 조합 필터링 및 추출

2025. 4. 24. 11:08·python/Pandas | Numpy
728x90

실무에서는 단순히 “age가 30 이상” 같은 조건이 아니라,
“30대 이상이고 점수가 85점 이상이며, 가입일이 2023년 이후이고, 결측치는 제외” 같은 복합적인 조건이 붙는다.

 

예제 데이터

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'user_id': [1001, 1002, 1003, 1004, 1005],
    'age': [25, 32, 40, np.nan, 29],
    'score': [88, 92, 85, 70, np.nan],
    'signup_date': ['2022-12-15', '2023-01-10', '2023-02-20', '2023-03-01', '2023-01-25'],
    'membership': ['basic', 'premium', 'basic', 'premium', 'basic']
})
df['signup_date'] = pd.to_datetime(df['signup_date'])

 


요구 조건

 

  1. age가 30 이상
  2. score가 85 이상
  3. signup_date가 2023년 이후
  4. score, age에 결측치 없음
  5. membership이 premium

조건 조합 적용

filtered = df[
    (df['age'] >= 30) &
    (df['score'] >= 85) &
    (df['signup_date'] >= '2023-01-01') &
    df['age'].notna() &
    df['score'].notna() &
    (df['membership'] == 'premium')
]

 


자주 쓰는 조건 조합 요약

기능 코드 예시 설명
범위 조건 df['age'].between(30, 40) 30 이상 40 이하
결측 제외 df['score'].notna() NaN 제외
문자열 포함 df['membership'].str.contains('premium') 특정 단어 포함
리스트 포함 df['user_id'].isin([1001, 1005]) 특정 값들 포함
날짜 비교 df['signup_date'] >= '2023-01-01' 날짜 필터

1. 예제: 상위 N명 + 조건 필터 조합

top_users = df[df['score'].notna()].sort_values(by='score', ascending=False).head(3)

→ 결측치 제거 후 score 기준 상위 3명 추출

 

2. 예제: 조건 필터 + 특정 컬럼만 보기

df.loc[
    (df['age'] >= 30) & (df['score'] >= 85),
    ['user_id', 'age', 'score']
]

→ 조건 필터 + 일부 열만 가져오는 실무 패턴

 

 

단순 조건 하나만으로는 실무 문제를 해결할 수 없다.
Boolean Indexing + .notna() + .between() + .isin() + loc 등을 조합하면
복잡한 조건도 간결하게 필터링할 수 있다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'python > Pandas | Numpy' 카테고리의 다른 글

[Pandas] query() (loc보다 더 깔끔하게 조건 필터링)  (0) 2025.04.24
[Pandas] filter()  (0) 2025.04.24
[Pandas] 데이터 타입 확인 및 변환 – dtypes, astype()  (0) 2025.04.24
[Pandas] 결측치(NaN) 처리  (0) 2025.04.24
[Pandas] 정렬과 순위 매기기 – sort_values, rank  (0) 2025.04.24
'python/Pandas | Numpy' 카테고리의 다른 글
  • [Pandas] query() (loc보다 더 깔끔하게 조건 필터링)
  • [Pandas] filter()
  • [Pandas] 데이터 타입 확인 및 변환 – dtypes, astype()
  • [Pandas] 결측치(NaN) 처리
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (154) N
      • python (5) N
        • selenium (4)
        • algorithm (10) N
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (31)
      • Data Scientist (3)
      • Data Analysis (11) N
      • Computer Science (36) N
      • Why? (15)
      • 마음가짐 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
[Pandas] 조건 조합 필터링 및 추출
상단으로

티스토리툴바