직접 해보기/Python

[Pandas] 데이터프레임 정렬하기 :: sort_values, sort values

서윤L 2024. 6. 18. 15:33
728x90
반응형

0️⃣  데이터프레임 생성

  • 먼저 테스트를 위한 데이터프레임을 생성하겠습니다.
import pandas as pd
import numpy as np

# 테스트용 데이터프레임 생성
df = pd.DataFrame({
    'col1': ['A', 'A', 'B', np.nan, 'D', 'C', 'D', 'C'],
    'col2': [3, 1, 9, 8, 7, 4, 5, 6],
    'col3': [0, 1, 8, 4, 2, 3, 7, 9],
    'col4': ['a', 'B', 'c', 'D', 'e', 'F', 'g', 'H']
})


1️⃣  칼럼 기준으로 정렬하기 (오름차순, 내림차순)  ::  sort_values

  • 데이터프레임의 특정칼럼 기준으로 정렬하고 싶다면 sort_values 를 사용하면 됩니다.
    ascending 파라미터를 이용해서 오름차순 or 내림차순으로 정렬시킬 수 있습니다.
# col2 칼럼 기준 오름차순으로 정렬하기
df = df.sort_values(by='col2', ascending=True)

# col2 칼럼 기준 내림차순으로 정렬하기
df = df.sort_values(by='col2', ascending=False)

 

 

  • 참고로 문자열 기준으로 오름차순 정렬을 한다면, 아래처럼 대문자가 먼저 취급됩니다.


2️⃣  정렬할 때 빈데이터 위치 지정하기 (NaN, NA, None 등)

  • col1 처럼 데이터에 NaN값이 끼어있다면 어떻게 정렬될까요? 오름차순이던 내림차순이던 무조건 맨 마지막으로 갑니다.
  • 만약 NaN값의 위치를 정해주고 싶다면 na_position 파라미터를 지정해주면 됩니다.
# col1 칼럼 기준 오름차순으로 정렬하기 (빈 데이터를 맨 처음으로)
df = df.sort_values(by='col1', ascending=True, na_position='first')

# 다시 마지막으로 지정하고 싶다면 na_position='last'


3️⃣  칼럼 2개 이상을 기준으로 정렬하기

  • 칼럼 여러개를 기준으로 정렬하는 것도 가능합니다. 아래와 같이 by 에 리스트 형태로 칼럼명을 넣어주면 됩니다.
    by = ['칼럼명1', '칼럼명2', ..]
  • 리스트에 먼저 들어간 칼럼 기준으로 정렬됩니다.
    다시 말해 '칼럼명1'에 대해 먼저 정렬하고, 그 상태에서 '칼럼명2'에 대해 다시 정렬하고.. 이런식이죠.


 

728x90
반응형