Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 Pandas DataFrame 행 순위 매기기 – rank() 함수 완벽 정리

데이터프레임의 각 행에 순위를 나타내는 열을 추가하면 데이터를 손쉽게 정렬하고 특정 요소의 순위를 파악할 수 있습니다. 예를 들어 다음과 같은 게임 정보 데이터프레임이 있다고 가정해 보겠습니다.

예시 데이터프레임

NamePlay Time (in hours)Rate
0Call Of Duty45Better than Average
1Total Overdose46Good
2GTA352Best
3Bully22Average

순위 열 추가 후 결과

NamePlay Time (in hours)RateRate ranking
0Call Of Duty45Better than Average3.0
1Total Overdose46Good2.0
2GTA352Best1.0
3Bully22Average4.0

위 결과를 보면 순위가 정수처럼 보이지만 소수점(.0)이 붙어 있는 것을 알 수 있습니다. 이는 순위가 실수로 표현될 수 있음을 의미합니다. 데이터프레임 안에 동일한 값을 가진 요소, 즉 동률(tie)이 존재하면 해당 순위가 여러 요소 사이에서 나누어지기 때문에 순위 값이 실수 형태로 출력됩니다.

rank() 함수로 순위 지정하기

Pandas 라이브러리에는 순위를 계산하는 내장 함수인 .rank()가 포함되어 있습니다. 이 함수에 순위를 매길 기준이 되는 열을 전달하면, 각 행의 순위가 저장된 새로운 열을 반환합니다. 기본적으로 오름차순으로 순위가 매겨지며, ascending=0(False) 옵션을 사용하면 값이 클수록 높은 순위를 받도록 설정할 수 있습니다.

코드 예시

.rank() 함수를 활용한 전체 코드입니다.

import pandas as pd

games = {'Name': ['Call Of Duty', 'Total Overdose', 'GTA 3', 'Bully'],
'Play Time(in hours)': [45, 46, 52, 22],
'Rate': ['Better than Average', 'Good', 'Best', 'Average']}

df = pd.DataFrame(games)
df['ranking'] = df['Play Time(in hours)'].rank(ascending=0)
print(df)

실행 결과

             Name  Play Time(in hours)                 Rate  ranking
0 Call Of Duty 45 Better than Average 3.0
1 Total Overdose 46 Good 2.0
2 GTA 3 52 Best 1.0
3 Bully 22 Average 4.0

코드 설명

이 코드에서는 Pandas 라이브러리의 내장 함수를 사용해 데이터프레임의 각 요소에 순위를 부여했습니다. 순위를 매기는 기준 열로 플레이 시간을 담고 있는 'Play Time(in hours)' 열을 선택했으며, ascending=0 옵션 덕분에 플레이 시간이 길수록 높은 순위(1위)를 받게 됩니다.

그다음 데이터프레임에 'ranking'이라는 새로운 열을 추가하고, 여기에 .rank() 함수의 결과를 저장했습니다. 순위를 계산할 대상 열 이름을 함수에 전달하면 자동으로 각 행의 순위가 계산되며, 마지막으로 print(df)를 통해 순위 열이 추가된 전체 데이터프레임을 출력합니다.

마무리

이번 글에서는 Pandas 라이브러리와 .rank() 함수를 활용해 데이터프레임의 행에 순위를 지정하고 결과를 출력하는 방법을 알아보았습니다. DataFrame의 행 순위를 매기는 작업은 어렵지 않지만, 기준 열 선택과 ascending 옵션 설정만 제대로 이해하면 누구나 쉽게 활용할 수 있습니다. 동률 처리 방식(method 옵션)까지 함께 익혀두면 더욱 유용하게 사용할 수 있습니다.