파이썬/라이브러리(API)

파이썬 판다스 데이터에 순위 매기기

코데방 2024. 3. 8.
728x90

판다스 rank() 함수 사용해 데이터 순위 매기기

 

"rank()" 함수를 사용하면 데이터의 순위를 간단하게 매길 수 있습니다. 순위를 적용하는 옵션이 여러 가지 있으니 주의해서 사용하면 됩니다.

 

  • df.rank(method="순위옵션", ascending=True/False)

 

기본옵션인 오름차순은 순위를 매길 기준 값이 낮을 수록 높은 순위를 줍니다. 예를 들어 1~10까지 있다면 1이 1순위가 되는 것이죠.

 

하지만 시험 점수와 같이 큰 숫자가 높은 순위를 가져가도록 한다면 기준값을 내림차순으로 만들어 순위를 매겨줘야 합니다. 따라서 "ascending = False" 값을 줘서 꼭 내림차순으로 만들어줘야합니다. 

 

  • 점수가 높을 수록 순위가 높다(시험점수) : 내림차순 적용 ascending = False
  • 점수가 낮을 수록 순위가 높다(달리기) : 기본값 오름차순 적용

 

 

method의 경우 순위를 어떻게 적용할 것인지입니다. 아래와 같은 옵션이 있습니다. 각 옵션은 데이터 샘플을 가지고 살펴보겠습니다. 

rank method 설명
average 동점 간 그룹 내 평균 순위 부여
min 동점 간 그룹 내 최소 순위 부여
max 동점 간 그룹 내 최대 순위 부여
first 동점 시 데이터상 먼저 나타나는 관측치부터 수위 부여
dense min과 같으나 그룹간 순위가 1씩 증가

 

 

 

rank method average 순위

 

각 학생별로 평균점수를 가진 아래와 같은 데이터가 있습니다. 

 

 

 

average 옵션으로 평균에 순위를 매겨보겠습니다. 

시험점수가 높을 수록 순위가 높아야하니 점수가 내림차순으로 정렬된 상태에서 순위를 매겨줘야 합니다. 따라서 ascending옵션을 False 값으로 줍니다.

df["순위_average"] = df["평균"].rank(method = "average", ascending = False)

 

 

 

아래와 같이 동일 점수가 있는 사람들은 평균값으로 순위가 매겨집니다. 3,4등이 동점이니 3.5등이 되었습니다. 그리고 다음 등수는 5등부터 시작됩니다. 

 

 

 

rank method min 순위

 

min 옵션을 주면 동점의 경우 낮은 순위로 같이 매겨줍니다.

즉 위 average에서 3,4등이 3.5등이 됐다면 min 옵션에서는 둘 다 3등이 됩니다.

그리고 다시 5등부터 시작합니다.

df["순위_min"] = df["평균"].rank(method = "min", ascending = False)

 

 

 

rank method max 순위

 

max는 min과 달리 3,4등 모두를 4등으로 처리한 뒤 다음 등수는 5등부터 시작합니다. 

 

df["순위_max"] = df["평균"].rank(method = "max", ascending = False)

 

 

 

 

rank method fisrt 순위

 

누군가는 억울해지는 방법입니다. 먼저 나오는 사람이 3등, 그 다음이 4등이 돼버립니다.

df["순위_fisrt"] = df["평균"].rank(method = "first", ascending = False)

 

 

 

 

rank method dense

 

마지막 dense는 min과 동일하게 3등이 두 명 나오면 3등으로 처리해줍니다.

하지만 다음 등수를 5등부터 시작하는 min과 다르게 dense는 다음 등수를 4등부터 처리한다는 차이가 있습니다.

 

df["순위_dense"] = df["평균"].rank(method = "dense", ascending = False)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

댓글

💲 추천 글