파이썬/데이터프레임 다루기

Pandas에서 불리언 인덱싱을 더 간단하게! query() 함수 사용법

Data Jun 2025. 8. 30. 19:01

Pandas에서는 특정 조건을 만족하는 데이터만 뽑아내기 위해 불리언 인덱싱(Boolean Indexing) 을 많이 사용합니다.
보통은 DataFrame 뒤에 대괄호([])를 붙여서 조건식을 넣지만, query() 함수를 사용하면 훨씬 더 간결한 코드를 작성할 수 있습니다.

 

기본 사용법

예를 들어 수입(income)이 5000 이상인 사람만 추출한다고 해볼까요?

일반적인 불리언 인덱싱:

loan_df[loan_df['income'] > 5000]

query() 사용:

loan_df.query('income" > 5000')

query()에서는 DataFrame 이름을 반복해서 쓰지 않고, 컬럼명만 바로 사용하면 됩니다.

 

변수와 함께 사용하기

조건에 변수를 넣을 때는 변수 앞에 @ 기호를 붙여야 합니다.

income_mean = loan_df['income'].mean()
loan_df.query('income > @income_mean')

평균보다 수입이 높은 사람만 추출

 

문자열 조건식

컬럼 값이 문자열일 때도 바로 사용할 수 있습니다.

loan_df.query("property_area == 'City'")

 

  • 큰따옴표와 작은따옴표를 적절히 섞어 사용
  • 컬럼명에 공백이 있으면 `property area` 처럼 백틱(`)으로 감싸기

 

in / not in 활용

리스트 조건도 쉽게 처리할 수 있습니다.

loan_df.query("property_area in [City, Suburb]")
loan_df.query("property_area not in [City, Suburb]")

 

 

여러 조건 결합

&, |, ~ 연산자를 그대로 쓸 수 있고, 괄호로 묶어주면 더 명확해집니다.

loan_df.query("(married == 'Y') & (income > @income_mean)")

 

정리

  • query() 함수는 불리언 인덱싱을 더 간결하게 작성할 수 있는 방법
  • 특히 조건식만 깔끔하게 작성 가능해서, SQL WHERE절과 거의 동일한 느낌
  • @ 기호를 사용하면 외부 변수를 활용 가능
  • 문자열, in / not in, 여러 조건 결합도 지원
  • 다만, 대용량 데이터에서는 일반 불리언 인덱싱보다 속도가 약간 느릴 수 있음

👉 결국 [] 방식과 query() 방식은 결과가 동일합니다.
본인에게 더 편하고 가독성이 좋은 방식을 선택하면 됩니다!