PROGRESS
13 / 13
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
데이터 순위 산출하기 : rank()
30 P
QUESTION 13 #329
데이터프레임의 수치 데이터를 기준으로 순위를 매기는 프로그램입니다. 빈칸을 채워보세요.
main.py
import pandas as pd
data = {"이름": ["A", "B", "C", "D", "E"], "점수": [90, 80, 80, 100, 70]}
df = pd.DataFrame(data)
# 1. 기본 랭킹 (동점자는 평균 순위로 처리)
df["기본순위"] = df["점수"].(ascending=False)
# 2. 경쟁 방식 랭킹 (1, 2, 2, 4등 방식)
df["경쟁순위"] = df["점수"].(ascending=False, method="min")
print(df["경쟁순위"].tolist())
HINT
힌트: "순위" 또는 "계급"을 의미하는 영어 단어 rank를 함수 이름으로 사용합니다.
실행 결과 예시
[2.0, 3.0, 3.0, 1.0, 5.0]
INTERACTIVE SHELL
Shift + Enter 로 즉시 실행
rank()로 데이터에 순위 매기기
rank()는 데이터의 값을 기준으로 자동으로 순위를 계산하는 함수입니다.
기본 문법
df["열이름"].rank(ascending=False)
코드 분석
data = {"이름": ["A", "B", "C", "D", "E"], "점수": [90, 80, 80, 100, 70]}
이름 점수 순위는?
A 90 2등
B 80 3등? 4등? ← 동점!
C 80 3등? 4등? ← 동점!
D 100 1등
E 70 5등
동점 처리 방법 (method 옵션)
| method | B의 순위 | C의 순위 | 다음 순위 | 설명 |
|---|---|---|---|---|
"average" (기본) |
3.5 | 3.5 | 5 | 평균값 (3+4)/2 |
"min" |
3 | 3 | 5 | 더 높은(작은) 순위 |
"max" |
4 | 4 | 5 | 더 낮은(큰) 순위 |
"first" |
3 | 4 | 5 | 먼저 나온 순서대로 |
"dense" |
3 | 3 | 4 | 빈 순위 없이 연속 |
기본 순위 vs 경쟁 방식
# 기본 (average): 동점은 평균 순위
df["기본순위"] = df["점수"].rank(ascending=False)
# [2.0, 3.5, 3.5, 1.0, 5.0]
# 경쟁 방식 (min): 스포츠 순위와 같음
df["경쟁순위"] = df["점수"].rank(ascending=False, method="min")
# [2.0, 3.0, 3.0, 1.0, 5.0]
경쟁 방식은 스포츠 대회의 순위와 같습니다:
- 1등: D (100점)
- 2등: A (90점)
- 공동 3등: B, C (80점) ← 동점이므로 3등 두 명
- 5등: E (70점) ← 4등을 건너뜀
ascending 옵션
# ascending=False: 높은 값이 1등 (점수 순위)
df["점수"].rank(ascending=False)
# ascending=True: 낮은 값이 1등 (시간 순위)
df["시간"].rank(ascending=True)
| ascending | 1등 조건 | 사용 예 |
|---|---|---|
False |
값이 가장 큰 것 | 점수, 매출 |
True |
값이 가장 작은 것 | 시간, 거리 |
💡 핵심: method="min"은 공동 순위 뒤 번호를 건너뛰는 일반적인 랭킹 방식입니다.