2025.02.24 - [프로그래밍/Python 관련 정보] - [Pandas] Table of Contents
이번 포스팅은 사실 저도 지금까지 사용해보진 않았는데 Pandas 내용을 정리할 겸 조사한 내용입니다. DataFrame의 값을 추출할 때 query 매서드를 활용할 수 있습니다. 사용하는 방법자체는 아래와 같이 굉장히 간단한 구조입니다.
df.query("조건식")
import pandas as pd
df = pd.DataFrame({
'A': [10, 20, 30, 40, 50],
'B': ['apple', 'banana', 'cherry', 'date', 'elderberry']
})
# A가 20보다 크고 40 이하인 행 필터링
filtered_df = df.query("A > 20 and A <= 40")
print(filtered_df)
A B
2 30 cherry
3 40 date
query method의 기본 특성
(1) query() 내부에서 Python 연산자(==, !=, <, >, and, or, not) 사용가능
저번 포스팅에서 말씀드린 것처럼 Boolean Series 에는 기본적으로 Python 연산자를 곧바로 적용할 수 없습니다. 하지만 query 매서드를 사용하면 여기서 자유로워질 수 있습니다.
(2) Python의 eval() 함수를 사용하여 조건식을 실행
df = pd.DataFrame({'A': [1, 2, 3, 4, 5]})
query_str = "A > 2"
print(df.query(query_str)) # query() 사용
print(df[eval("df['A'] > 2")]) # eval() 사용 (동일한 결과)
(3) identifier(식별자)를 사용하여 expr를 작성
칼럼 이름과 df.index를 identifier(식별자)로 사용
df.index 자체를 사용할 수도 있지만, index에 이름(df.index.name)이 있는 경우 그 이름 사용가능
df = pd.DataFrame({'A': [1, 2, 3, 4, 5]}, index=['a', 'b', 'c', 'd', 'e'])
df.index.name = 'row_name' # Index 이름 설정
# index 이름을 활용한 query
print(df.query("row_name == 'b' or row_name == 'd'"))
(4) query() 내부에서는 Python 변수(외부 변수)를 직접 참조할 수 없으나 @변수명을 사용하여 참조
threshold = 30
filtered_df = df.query("A > @threshold")
print(filtered_df)
'프로그래밍 > Python 관련 정보' 카테고리의 다른 글
[Pandas] 데이터 재구조화 (0) | 2025.02.23 |
---|---|
[Pandas] Advanced Indexing - filter (0) | 2025.02.23 |
[Pandas] Advanced Indexing - Boolean vector (0) | 2025.02.23 |
[Pandas] fillna (0) | 2025.02.23 |
[Pandas] value_counts (0) | 2025.02.23 |