2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

파이썬 pandas의 query 메소드를 활용하는 방법은?

_____
Q1: pandas의 query 메소드란 무엇인가요?
A1: query 메소드는 DataFrame에서 문자열로 작성한 조건식을 사용해 데이터를 필터링할 수 있는 함수입니다. 복잡한 조건문을 간결하게 작성할 수 있어 가독성이 좋습니다.

Q2: 기본 사용법은 어떻게 되나요?
A2: `df.query('조건식')` 형태로 사용합니다. 예를 들어, `df.query('age > 30')`은 age 컬럼 값이 30 초과인 행만 반환합니다.

Q3: 여러 조건을 조합하는 방법은?
A3: AND 조건은 `and` 대신 `&`, OR 조건은 `or` 대신 `|`를 사용합니다. 예: `df.query('age > 30 & gender == "M"')`

Q4: 변수를 query 조건에 사용하려면?
A4: 문자열 내에 변수값을 넣으려면 `@` 기호를 사용합니다. 예:
```python
min_age = 25
df.query('age > @min_age')
```

Q5: 컬럼 이름에 공백이나 특수 문자가 포함되어 있다면?
A5: 컬럼 이름을 백틱(`)으로 감싸야 합니다. 예: `df.query('`column name` > 5')`

Q6: query 메소드는 원본 DataFrame을 변경하나요?
A6: 아닙니다. query는 조건에 맞는 데이터를 새로운 DataFrame으로 반환하며, 원본은 그대로 유지됩니다.

Q7: query에서 문자열 비교는 어떻게 하나요?
A7: 문자열은 반드시 작은 따옴표(' ')나 큰 따옴표(" ")로 감싸야 합니다. 예: `df.query('city == "Seoul"')`

Q8: null값(결측치) 처리 조건은?
A8: 결측치 여부는 pandas의 `isnull()`을 query 내부에서 직접 사용할 수 없으므로, 필터링 전 결측치를 처리하거나 Boolean indexing을 병행해야 합니다.

Q9: query 메소드가 느려질 수 있는 경우는?
A9: 매우 큰 데이터셋이나 복잡한 조건식 사용 시 속도가 저하될 수 있습니다. 이때는 Boolean 인덱싱과 비교해 성능을 테스트해보는 것이 좋습니다.

Q10: query에서 정규식 사용이 가능한가요?
A10: query 문법 자체에서는 정규식 지원이 제한적입니다. 정규식 필터링은 pandas의 `str.contains()` 등을 사용하세요.

---
요약: pandas `query`는 DataFrame 필터링 시 직관적인 문자열 조건식을 사용하며, 변수 참조는 `@`로, 여러 조건은 `&`, `|`로 결합합니다. 컬럼명이 복잡할 경우 백틱으로 감싸고, 문자열 비교 시 따옴표를 꼭 사용해야 합니다.
Pandas의 `query()` 메소드는 데이터프레임에서 조건에 맞는 행을 필터링할 수 있는 간편하고 직관적인 방법을 제공합니다.

SQL에서의 쿼리처럼 string 형식으로 조건을 작성할 수 있어 가독성이 높습니다.

`query()` 메소드를 사용하는 방법은 다음과 같습니다.

1. 기본 사용법 먼저, Pandas 라이브러리를 import하고, 예시 데이터를 포함하는 데이터프레임을 생성합니다.

```python import pandas as pd 예시 데이터프레임 생성 data = { 'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 30, 35, 40], 'salary': [50000, 60000, 70000, 80000] } df = pd.DataFrame(data) ```

2. 조건 필터링 `query()` 메소드를 사용하여 특정 조건에 맞는 데이터를 필터링할 수 있습니다.

예를 들어, 나이가 30 이상인 직원들을 필터링하려면: ```python 나이가 30 이상인 직원들 result = df.query('age >= 30') print(result) ```

3. 여러 조건 사용 논리 연산자를 사용하여 여러 조건을 결합할 수 있습니다.

예를 들어, 나이가 30 이상이고 연봉이 70000 이상인 직원을 필터링하려면: ```python 나이가 30 이상이고 연봉이 70000 이상인 직원들 result = df.query('age >= 30 and salary >= 70000') print(result) ```

4. 변수 사용하기 쿼리 내에서 파이썬 변수를 사용할 수도 있습니다.

이 경우, `$` 기호를 사용합니다: ```python min_age = 30 min_salary = 70000 변수를 사용하여 필터링 result = df.query('age >= @min_age and salary >= @min_salary') print(result) ```

5. 특정 열 선택 `query()` 메소드는 특정 열을 선택할 때도 사용할 수 있습니다.

예를 들어, 'name'과 'salary' 열만 선택하려면: ```python 특정 열 선택 result = df.query('age >= 30')[['name', 'salary']] print(result) ```

6. 주의사항 - `query()` 메소드는 열 이름에 공백이나 특수문자가 있는 경우 사용할 수 없습니다.

이 경우, 표현식을 변경하거나 `eval` 메소드를 고려할 수 있습니다.

- `query` 메소드는 임시 데이터프레임을 반환하기 때문에 원본 데이터프레임은 변경되지 않습니다.

이상의 방법으로 Pandas의 `query()` 메소드를 사용하여 데이터프레임을 간편하게 필터링할 수 있습니다.

이를 통해 데이터 분석 작업을 더욱 직관적이고 효율적으로 수행할 수 있습니다.

작성자: 최현서 [비회원] | 작성일자: 1년 전 2025-02-10 05:31:19
조회수: 114 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.