반응형

02-06. 순위 (rank)


DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)

 

개요


rank 메서드는 축에 대해서 순위를 매기는 메서드 입니다. 동일 순위일 경우 평균을 반환합니다.

 

사용법


기본 사용법
df.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)
axis : {0 : index / 1 : columns} 순위를 매길 레이블입니다.
method : {'average' / 'min' / 'max' / 'first' / 'dense'} 동순위 일때 처리 방법입니다.
average는 평균, min은 낮은순위, max는 높은순위, first는 나타나는순서대로
dense의 경우는 min과 같지만 그룹간 순위는 항상 1씩 증가합니다.
numeric_only : {True / False} 숫자만 순위를 매길지 여부 입니다.
na_option : {'keep' / 'top' / 'bottom'} NaN값의 처리 방법입니다.
keep의 경우 NaN순위 할당, top의 경우 낮은순위 할당, bottom의 경우 높은 순위를 할당합니다.
ascending : {True / False} 오름차순으로 할지의 여부 입니다.
pct : {True / False} 순위를 백분위수형식으로 할지 여부입니다.

반응형

 

예시


먼저, pd.NA가 포함된 간단한 9x1 객체를 하나 생성하겠습니다.
같은 수의 경우 보기 쉽도록 인덱스에 기호를 붙여두었습니다.(★, ☆)

data = [[5],[5],[pd.NA],[3],[-3.1],[5],[0.4],[6.7],[3]]
row = ['A★','B★','C','D☆','E','F★','G','H','I☆']
df = pd.DataFrame(data=data, index=row, columns=['Value'])
print(df)
>>
   Value
A★     5
B★     5
C    <NA>
D☆     3
E    -3.1
F★     5
G    0.4
H     6.7
I☆     3


method에 따른 차이
method에따라 동점의 경우 순위가 어떻게 매겨지는지 확인 할 수 있습니다.

average : D와 I의 경우 각각 3등 4등이기때문에 3.5 출력
min : A, B, F의 경우 각각 5등 6등 7등으로 가장 낮은등수인 5 출력
max : A, B, F의 경우 각각 5등 6등 7등으로 가장 높등수인 7 출력
first : 동점일경우 위에서부터 매김 D와 I 각각 3등 4등
dense : min처럼 동작하지만 등수가 순차적으로 증가

df['average']=df['Value'].rank(method='average')
df['min']=df['Value'].rank(method='min')
df['max']=df['Value'].rank(method='max')
df['first']=df['Value'].rank(method='first')
df['dense']=df['Value'].rank(method='dense')
print(df)
>>
   Value  average  min  max  first  dense
A★     5      6.0  5.0  7.0    5.0    4.0
B★     5      6.0  5.0  7.0    6.0    4.0
C    <NA>      NaN  NaN  NaN    NaN    NaN
D☆     3      3.5  3.0  4.0    3.0    3.0
E    -3.1      1.0  1.0  1.0    1.0    1.0
F★     5      6.0  5.0  7.0    7.0    4.0
G     0.4      2.0  2.0  2.0    2.0    2.0
H     6.7      8.0  8.0  8.0    8.0    5.0
I☆     3      3.5  3.0  4.0    4.0    3.0


na_option에 따른 차이
na_option에 따라 Na가 포함된경우 순위가 어떻게 매겨지는지 확인할 수 있습니다.
추가로 pct 의 경우도 추가하였습니다.

keep : Na요소에 NaN을 부여하여 그대로 둡니다.
top : Na에게 가장 높은 순위를 부여합니다. 1등이 된것을 볼 수 있습니다.
bottom : Na에게 가장 높은 순위를 부여합니다. 9등이 된것을 볼 수 있습니다.
pct : True일 경우 백분위수로 표시합니다.

df['keep']=df['Value'].rank(na_option='keep')
df['top']=df['Value'].rank(na_option='top')
df['bottom']=df['Value'].rank(na_option='bottom')
df['pct']=df['Value'].rank(pct=True)
print(df)
>>
   Value  keep  top  bottom     pct
A★     5   6.0  7.0     6.0  0.7500
B★     5   6.0  7.0     6.0  0.7500
C    <NA>   NaN  1.0     9.0     NaN
D☆     3   3.5  4.5     3.5  0.4375
E    -3.1   1.0  2.0     1.0  0.1250
F★     5   6.0  7.0     6.0  0.7500
G     0.4   2.0  3.0     2.0  0.2500
H     6.7   8.0  9.0     8.0  1.0000
I☆     3   3.5  4.5     3.5  0.4375
반응형

+ 최근 글