데이터 정렬하기 : sort_values()

30 P
QUESTION 12 #328
데이터프레임에서 하나 이상의 컬럼을 기준으로 데이터를 오름차순 또는 내림차순으로 정렬하는 프로그램입니다. 빈칸을 채워보세요.
main.py
import pandas as pd

data = {
    "이름": ["민수", "영희", "지우", "채린", "예림", "영수"],
    "점수": [85, 92, 85, 95, 78, 85],
    "나이": [25, 22, 24, 23, 22, 21]
}
df = pd.DataFrame(data)

# 1. 점수 내림차순 정렬
sort1 = df.(by="점수", ascending=False)
print("--- 점수 순 정렬 ---")
print(sort1)

# 2. 다중 정렬: 점수(내림차순) -> 나이(오름차순)
sort2 = df.(by=["점수", "나이"], ascending=[False, True])

print("\n--- 점수(내림) & 나이(오름) 정렬 ---")
print(sort2)
실행 결과 예시
--- 점수 순 정렬 ---
   이름  점수  나이
3  채린  95  23
1  영희  92  22
0  민수  85  25
2  지우  85  24
5  영수  85  21
4  예림  78  22

--- 점수(내림) & 나이(오름) 정렬 ---
   이름  점수  나이
3  채린  95  23
1  영희  92  22
5  영수  85  21
2  지우  85  24
0  민수  85  25
4  예림  78  22
INTERACTIVE SHELL Shift + Enter 로 즉시 실행

sort_values() 다중 열 정렬

하나의 열뿐 아니라 여러 열을 기준으로 순차 정렬할 수 있습니다.

단일 열 정렬

sort1 = df.sort_values(by="점수", ascending=False)

점수 기준 내림차순으로 정렬합니다.

다중 열 정렬

sort2 = df.sort_values(
    by=["점수", "나이"],
    ascending=[False, True]
)

1순위: 점수 내림차순 (높은 점수부터)
2순위: 점수가 같으면 나이 오름차순 (어린 순)

동작 과정

1순위 - 점수 내림차순:
채린  95  (최고점)
서희  92
민수  85 ─┐
지연  85 ─┼─ 점수 동일! → 2순위 적용
예서  85 ─┘
서림  78

2순위 - 나이 오름차순 (85점 그룹 내):
예서  85  21세  ← 가장 어림
지연  85  24세
민수  85  25세  ← 가장 나이 많음

by와 ascending을 리스트로 전달

df.sort_values(
    by=["점수", "나이"],         # 정렬 기준 (리스트)
    ascending=[False, True]      # 각 기준의 방향 (리스트)
)
위치 by ascending 의미
1번째 "점수" False 점수 내림차순
2번째 "나이" True 나이 오름차순

다양한 정렬 조합

# 점수 내림, 나이 내림
df.sort_values(by=["점수", "나이"], ascending=[False, False])

# 점수 오름, 나이 오름
df.sort_values(by=["점수", "나이"], ascending=[True, True])

# 동일한 방향이면 하나의 값으로도 가능
df.sort_values(by=["점수", "나이"], ascending=True)

💡 핵심: 다중 정렬은 by와 ascending에 리스트를 전달하여 각 열의 정렬 방향을 개별 지정합니다.