Pandas 데이터 정렬 및 필터링 (sort_values(), query())
데이터 분석에서 데이터를 정리하는 과정은 매우 중요합니다. 데이터가 정렬되어 있어야 패턴을 찾기 쉽고, 원하는 데이터를 빠르게 추출할 수 있습니다. Pandas에서는 sort_values()
를 사용하여 데이터를 정렬하고, query()
를 활용하여 원하는 조건의 데이터를 필터링할 수 있습니다. 이번 포스팅에서는 이 두 가지 기능을 중심으로 데이터 정렬과 필터링 방법을 자세히 살펴보겠습니다.
1. 데이터 정렬 (sort_values())
Pandas의 sort_values()
메서드는 DataFrame의 특정 열을 기준으로 데이터를 정렬할 때 사용됩니다. 기본적으로 오름차순 정렬을 수행하며, 내림차순 정렬도 가능합니다.
기본 사용법
import pandas as pd
# 샘플 데이터 생성
data = {
'이름': ['김철수', '이영희', '박민수', '최지우', '정하나'],
'나이': [28, 34, 22, 40, 29],
'점수': [85, 92, 78, 88, 95]
}
df = pd.DataFrame(data)
# 나이를 기준으로 오름차순 정렬
df_sorted = df.sort_values(by='나이')
print(df_sorted)
위 코드에서는 나이
열을 기준으로 데이터를 오름차순으로 정렬했습니다.
여러 개의 열을 기준으로 정렬
여러 개의 열을 기준으로 정렬할 수도 있습니다. 예를 들어, 나이
를 먼저 정렬하고, 같은 나이일 경우 점수
를 기준으로 정렬하려면 다음과 같이 사용할 수 있습니다.
# 나이를 오름차순으로, 같은 나이에서는 점수를 내림차순으로 정렬
df_sorted = df.sort_values(by=['나이', '점수'], ascending=[True, False])
print(df_sorted)
ascending
옵션에 리스트를 전달하여 열마다 정렬 방향을 다르게 지정할 수 있습니다.
내림차순 정렬
내림차순으로 정렬하려면 ascending=False
를 사용하면 됩니다.
# 점수를 기준으로 내림차순 정렬
df_sorted = df.sort_values(by='점수', ascending=False)
print(df_sorted)
2. 데이터 필터링 (query())
데이터 필터링은 특정 조건을 만족하는 데이터를 추출하는 과정입니다. query()
메서드를 사용하면 간결한 문법으로 원하는 데이터를 쉽게 추출할 수 있습니다.
기본 사용법
# 점수가 90 이상인 데이터 필터링
high_score = df.query("점수 >= 90")
print(high_score)
위 코드에서는 점수
가 90 이상인 행만 필터링하여 새로운 DataFrame을 생성합니다.
여러 조건을 적용한 필터링
여러 조건을 조합하여 데이터를 필터링할 수도 있습니다.
# 나이가 30 이상이고 점수가 85 이상인 데이터 필터링
filtered_df = df.query("나이 >= 30 and 점수 >= 85")
print(filtered_df)
and
연산자를 사용하여 두 가지 조건을 동시에 만족하는 데이터를 필터링할 수 있습니다.
문자열을 활용한 필터링
query()
를 사용하면 문자열 값을 기준으로도 데이터를 필터링할 수 있습니다.
# 이름이 '김철수'인 데이터 필터링
kim_df = df.query("이름 == '김철수'")
print(kim_df)
특정 값이 포함된 데이터 필터링
query()
를 활용하여 특정 열이 특정 값 리스트에 포함된 데이터를 추출할 수도 있습니다.
# 이름이 '김철수' 또는 '박민수'인 데이터 필터링
name_filtered_df = df.query("이름 in ['김철수', '박민수']")
print(name_filtered_df)
in
연산자를 활용하면 여러 개의 값을 조건으로 설정할 수 있습니다.
3. sort_values()와 query() 함께 사용하기
sort_values()
와 query()
를 조합하면 특정 조건을 만족하는 데이터를 정렬하여 더욱 유용한 결과를 얻을 수 있습니다.
# 점수가 85 이상인 데이터 중에서 나이를 기준으로 오름차순 정렬
filtered_sorted_df = df.query("점수 >= 85").sort_values(by='나이')
print(filtered_sorted_df)
이처럼 query()
로 필터링한 후 sort_values()
를 적용하면, 원하는 데이터를 정리된 형태로 쉽게 얻을 수 있습니다.
4. 정리
sort_values()
는 특정 열을 기준으로 데이터를 정렬하는 데 사용됩니다.- 기본적으로 오름차순 정렬되며,
ascending=False
를 사용하면 내림차순 정렬할 수 있습니다. - 여러 개의 열을 기준으로 정렬할 수 있습니다.
- 기본적으로 오름차순 정렬되며,
query()
는 특정 조건을 만족하는 데이터를 필터링하는 데 유용합니다.- 여러 조건을 조합할 수 있으며,
and
,or
,in
연산자를 사용할 수 있습니다.
- 여러 조건을 조합할 수 있으며,
sort_values()
와query()
를 함께 사용하면 원하는 데이터를 더욱 정리된 형태로 분석할 수 있습니다.
Pandas의 정렬과 필터링 기능을 활용하면 데이터를 더욱 효과적으로 탐색하고 분석할 수 있습니다. 이를 실무에 적용하여 데이터 분석의 효율성을 높여보세요!
'Python Pandas' 카테고리의 다른 글
Pandas에서 문자열 데이터 다루기 - str.contains(), str.replace() (0) | 2025.02.12 |
---|---|
Pandas 컬럼 추가(assign), 삭제(drop) 및 데이터 수정하기(rename) (0) | 2025.02.11 |
Pandas 중복 데이터 제거 (drop_duplicates()) (0) | 2025.02.09 |
Pandas 결측치 처리 (isna(), fillna(), dropna()) (0) | 2025.02.08 |
Pandas 데이터 미리보기 - head(), tail(), info(), describe() (0) | 2025.02.07 |