loan_df[loan_df['income'] >= 5000]
위의 코드를 query()를 사용해서 변경할 수 있다.
loan_df.query('income >= 5000')
DataFrame에 query() 함수를 사용하면 좀 더 간단한 코드로 동일한 결과물을 얻을 수 있다. 아래와 같이 query() 함수에 따옴표(' 혹은 ") 안에 조건식을 넣어서 값을 넘겨주면 되는데 조건식에서 DataFrame에 대한 언급을 생략하고 바로 컬럼 이름만 쓰면 되어서 코드가 좀 더 간결해지는 효과가 있다.
조건식에 변수를 사용하는 것도 가능. 예를 들어 income_mean이라는 변수에 대출 신청자들의 수입 평균을 저장해 두고 query() 안에 'income > @income_mean' 이런 식으로 써 주면 수입이 평균보다 큰 신청자들의 데이터만 뽑을 수 있다. 이때 변수 앞에 @를 쓰지 않으면 오류가 나니까 주의.
income_mean = loan_df['income'].mean()
loan_df.query('income > @income_mean')
loan_df.query("property_area == 'City'")
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")
loan_df.query("(married == 'Y') & (income > @income_mean)")
- query() 함수를 사용하면 좀 더 간결한 코드로 DataFrame에서 불린 인덱싱을 할 수 있다. 내부적인 작동 방식은 대괄호를 사용해서 불린 인덱싱을 하는 것과 거의 동일. 다만 데이터가 많은 경우에는 query() 함수를 쓸 때 속도가 조금 느려짐.