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'에 대해 다시 정렬하고.. 이런식이죠.