[python+pandas] 판다스 데이터프레임 sort_values 메소드 2022.04.26 20:18:23
반응형

SQL에서 어떤 컬럼의 값을 기준으로 정렬해줄 때 사용되는 예약어는 ORDER BY입니다. 파이썬 판다스 데이터프레임에서 이것과 비슷한 역할을 해주는 것이 바로 sort_values 메소드입니다.

 

설명을 위해 간단한 데이터프레임을 하나 만들겠습니다. A, B, C, D, E, F, G라는 학생들의 수학, 영어, 역사 점수를 담은 데이터프레임입니다. 

 

import pandas as pd

df = pd.DataFrame([[95, 92, 88], [84, 67, 88], [91, 99, 68], [87, 79, 81], [77, 92, 85], [81, 82, 83], [91, 73, 41]],
     index=['A', 'B', 'C', 'D', 'E', 'F', 'G'],
     columns=['math', 'english', 'history'],
   )

print(df)

 

 

 

하나의 컬럼을 기준으로 정렬

수학 점수를 기준으로 오름차순 정렬을 해보도록 하겠습니다. 

 

print(df.sort_values(by=['math']))

 

 

수학점수가 가장 낮았던 E 학생부터 가장 높았던 A 학생 순으로 정렬되었습니다.

 

이번에는 수학 점수가 높은 학생부터 정렬을 해보도록 하겠습니다. 내림차순 정렬이 되어야 하므로, ascending 파라미터를 추가하면서 값은 False로 지정해줍니다. 

 

print(df.sort_values(by=['math'], ascending=False))

 

 

기대한 것처럼 수학점수가 가장 높았던 A학생부터 정렬되었습니다.

 

여러 개 컬럼을 기준으로 정렬

이번에는 수학 점수가 높으면서 역사 점수가 낮은 학생부터 정렬해보도록 하겠습니다. 이 경우에는 수학 점수는 내림차순이 되어야하고, 역사 점수는 오름차순이 되어야 합니다.

 

print(df.sort_values(by=['math', 'history'], ascending=[False, True]))

 

 

일단 수학점수는 내림차순으로 잘 정렬된 것을 한 눈에 확인할 수 있습니다. 그리고 수학 점수 91점으로 같은 G 학생과 C 학생을 보면 영어 점수는 오름차순으로 정렬된 것을 알 수 있습니다. 

 

 

관련 글

[1] [MariaDB] Order by, 여러 개로 정렬하기 (더 중요한 것을 앞에)

[2] [sqlite3] 데이터 오름차순 및 내림차순으로 정렬하기

반응형
secret
-
+