본문 바로가기
  • CobsLab upgrades your company value by AI technology
pandas

내림차순, 오름차순, 다중조건까지! 판다스로 데이터 정렬하기

by dmkdmk 2023. 3. 23.

데이터를 정렬하는 방법에는 크게 두 가지가 있습니다. 하나는 인덱스(index)를 기준으로 정렬하는 방법이고, 다른 하나는 특정 열(column)의 값을 기준으로 정렬하는 방법입니다.

먼저, 인덱스를 기준으로 데이터를 정렬하는 방법을 살펴보겠습니다. 

 

설명에 쓸 데이터프레임(DataFrame) 예제입니다.

data = {'name': ['Kim', 'Lee', 'Park', 'Choi', 'Jung'],
        'age': [24, 26, 21, 27, 25],
        'score': [90, 85, 95, 80, 75]}

df = pd.DataFrame(data)

 

생성한 데이터프레임을 인덱스를 기준으로 오름차순으로 정렬했습니다.

df_sorted = df.sort_index()
print(df_sorted)

>>>
  name  age  score
0   Kim   24     90
1   Lee   26     85
2  Park   21     95
3  Choi   27     80
4  Jung   25     75




이번에는 인덱스를 기준으로 내림차순으로 정렬해보겠습니다.

df_sorted = df.sort_index(ascending=False)
print(df_sorted)

>>>

  name  age  score
4  Jung   25     75
3  Choi   27     80
2  Park   21     95
1   Lee   26     85
0   Kim   24     90



이번에는 특정 열의 값을 기준으로 데이터를 정렬하는 방법을 살펴보겠습니다. 

 

df_sorted = df.sort_values('score')
print(df_sorted)

>>>
   name  age  score
4  Jung   25     75
3  Choi   27     80
1   Lee   26     85
0   Kim   24     90
2  Park   21     95

 'score' 열의 값을 기준으로 데이터를 오름차순으로 정렬했습니다.

 


이번에는 'score' 열의 값을 기준으로 내림차순으로 정렬해보겠습니다.

df_sorted = df.sort_values('score', ascending=False)
print(df_sorted)

>>>
   name  age  score
2  Park   21     95
0   Kim   24     90
1   Lee   26     85
3  Choi   27     80
4  Jung   25     75



데이터를 정렬하는 데 있어서 추가적인 조건을 지정할 수도 있습니다. 예를 들어, 'score' 열의 값을 기준으로 내림차순으로 정렬하고, 'age' 열의 값을 기준으로 내림차순으로 정렬하는 경우를 살펴보겠습니다.

df_sorted = df.sort_values(['score', 'age'], ascending=[False, False])
print(df_sorted)

>>>
   name  age  score
2  Park   21     95
0   Kim   24     90
1   Lee   26     85
3  Choi   27     80
4  Jung   25     75

 

 'sort_values' 함수의 첫 번째 인자로는 정렬 기준이 될 열의 이름을 리스트 형태로 전달하고, 두 번째 인자로는 해당 열들의 정렬 방식(오름차순 or 내림차순)을 리스트 형태로 전달합니다.



df_sorted = df.sort_values('score', ascending=False).head(3)
print(df_sorted)

>>>
   name  age  score
2  Park   21     95
0   Kim   24     90
1   Lee   26     85

다음으로 'score' 열의 값을 기준으로 내림차순으로 정렬한 후, 정렬된 결과에서 상위 3개의 데이터만 선택하는 코드를 작성해보겠습니다.
 'head' 함수는 데이터프레임에서 상위 n개의 데이터를 선택하는 함수입니다.

 

마지막으로, 원래의 데이터프레임을 정렬된 상태로 바꾸는 방법에 대해 살펴보겠습니다. 이를 위해서는 'inplace' 파라미터를 True로 설정하면 됩니다.

df.sort_values('score', ascending=False, inplace=True)
print(df)

>>>
   name  age  score
2  Park   21     95
0   Kim   24     90
1   Lee   26     85
3  Choi   27     80
4  Jung   25     75


위 코드에서 'sort_values' 함수의 결과를 원래의 데이터프레임에 적용하기 위해 'inplace' 파라미터를 True로 설정했습니다. 이렇게 하면 원래의 데이터프레임이 정렬된 상태로 바뀝니다.

이상으로, 판다스에서 데이터를 정렬하는 방법에 대해 알아보았습니다. 판다스는 데이터를 다루는데 다양한 함수를 제공하므로, 이를 활용하여 데이터를 보다 쉽게 다룰 수 있습니다.

댓글