Python Pandas

Pandas 데이터 정렬 및 필터링 (sort_values(), query())

PyExplorer 2025. 2. 10. 00:44
728x90

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의 정렬과 필터링 기능을 활용하면 데이터를 더욱 효과적으로 탐색하고 분석할 수 있습니다. 이를 실무에 적용하여 데이터 분석의 효율성을 높여보세요!

728x90