PROGRESS
12 / 13
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
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)
HINT
힌트: "값들을 정렬하다"라는 의미의 영어 단어를 조합한 sort_values() 함수를 사용합니다.
실행 결과 예시
--- 점수 순 정렬 --- 이름 점수 나이 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에 리스트를 전달하여 각 열의 정렬 방향을 개별 지정합니다.