자신에게 친절할 것 :)

Data Science/Pandas

[Pandas] query()로 불린 인덱싱

Tashapark 2024. 6. 14. 21:15
728x90

# 코드잇 데이터 사이언티스트 강의 듣는 중


 

<query()로 불린 인덱싱>

 

- 일반적인 불린 인덱싱

loan_df[loan_df['income'] > 5000]

 

 - .query() 를 사용하면 더 간단해짐. 

- 데이터 프레임 객체의 쿼리 메소드로 들어가서 ('조건 식') 을 넣어주기만 하면 됨. 데이터 프레임을 계속 안 써도 되서 더 짧아짐. 

loan_df.query('income > 5000')

 

 

- 변수의 비교도 가능 

income_mean = loan_df['income'].mean()

loan_df.query('income > @income_mean')

 

--> 굳이 길게 안 써도 되니깐 훨씬 깔끔 해짐. 

--> 대신, 만든 변수 앞에는 @를 넣어줘야 함 (아니면 에러 뜸)

 

 

- 문자열도 그냥 조건문 ""/'' 넣어주면 됨. 

- 만약에 컬럼명에 공백이 있으면 `property area` --> 백틱``으로 컬럼명을 감싸면 됨. 

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

 

 

- True 나 False 값을 리턴하는 다양한 형태의 조건식에 in 이나 not in을  사용

--> 벡터에서 특정 값만 추출 or 추출하지 않게 가능.

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

 

 

--> .query("칼럼명 in ['벡터', '벡터']")

 

 

 

 

 

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

 

--> .query("칼럼명 not in ['벡터', '벡터']")

 

 

 

 


 

<query()로 다중 불린 인덱싱>

 

- 연산자 사용 가능 

- 각각의 조건식을 괄호로 묶는 것이 더 좋음. 

- 특히, not ~의 경우 조건식을 묶지 않으면 에러가 뜰 수 있음. 

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

 

- 쿼리를 사용하면, 데이터가 많아질 때 속도가 조금 느려질 수 는 있음. 

 

++ 쟈스의 제이쿼리 같은 것인가??

었쨌든 쓰기가 훨씬 편하니 이렇게도 연습해봐야 겠다. 

728x90
반응형