반응형

07-03. 정렬후 추출 (nlargest, nsmallest)

DataFrame.nlargest(n, columns, keep='first')

DataFrame.nsmallest(n, columns, keep='first')

 

개요


nlargest메서드와 nsmallest메서드는 데이터를 오름차순/내림차순 정렬 후, 위에서 n개의 행을 출력하는 메서들입니다.
사실상 df.sort_values(columns, ascending=True/False).head(n)와 사용방식이 완전히 동일합니다.

 

사용법


기본 사용법
df.nlargest(n, columns, keep='first')
df.nsmallest(n, columns, keep='first')
n : 정렬 후 출력할 행의 수 입니다.
columns : 정렬의 기준이 될 열 입니다.
keep : {first, last, all}동일한 값일경우 어느 행을 출력할지 정합니다. first면 위부터, last면 아래부터, all이면 모두 출력합니다.

반응형

 

예시


※ nlargest와 nsmallest는 사용방식이 완전히 동일하므로, nlargest 예시만 진행하겠습니다.

먼저 간단한 5x3짜리 DataFrame를 생성해보겠습니다.

col = ['col1','col2','col3']
row = ['row3','row5','row1','row4','row2']
data = [[ 1, 21, 7],
        [ 2, 33, 3],
        [ 2,  7,97],
        [ 4, 56,31],
        [ 5, 18, 5]]
df = pd.DataFrame(data=data, index=row, columns=col)
print(df)
>>
      col1  col2  col3
row3     1    21     7
row5     2    33     3
row1     2     7    97
row4     4    56    31
row2     5    18     5

keep 인수의 사용
keep인수를 통해 중복일경우의 출력할 행을 지정할 수 있습니다.
처음 발생한 값부터 출력(위쪽값 출력)

print(df.nlargest(n=3,columns='col1',keep='first'))
>>
      col1  col2  col3
row2     5    18     5
row4     4    56    31
row5     2    33     3

마지막에 발생한 값부터 출력(아래쪽 값 출력)

print(df.nlargest(n=3,columns='col1',keep='last'))
>>
      col1  col2  col3
row2     5    18     5
row4     4    56    31
row1     2     7    97

중복값 모두 출력

print(df.nlargest(n=3,columns='col1',keep='all'))
>>
      col1  col2  col3
row2     5    18     5
row4     4    56    31
row5     2    33     3
row1     2     7    97


여러 열을 동시에 고려하여 정렬
여러 열을 동시에 고려하여 정렬하고자 한다면 list를 사용하면됩니다.
col1과 col3 모두에서 큰 값 기준 정렬할 경우 아래와 같습니다.

print(df.nlargest(n=3,columns=['col1','col3']))
>>
      col1  col2  col3
row2     5    18     5
row4     4    56    31
row1     2     7    97 
#col1에서 중복인 row1, row5에 대해 col3의 값이 더 큰 row1이 출력
반응형

+ 최근 글