반응형
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이 출력
반응형
'파이썬완전정복-Pandas DataFrame > 07. 정렬' 카테고리의 다른 글
Pandas DataFrame 07-02. 인덱스 기준 정렬 (sort_index) (0) | 2022.01.22 |
---|---|
Pandas DataFrame 07-01. 값 기준 정렬 (sort_values) (0) | 2022.01.22 |