sort_values 소개
sort_values는 데이터프레임을 지정된 열(column) 또는 여러 열을 기준으로 정렬할 수 있도록 하는 메서드입니다. 기본적으로 오름차순으로 정렬되며, 다양한 옵션으로 정렬 방식과 순서를 제어할 수 있습니다.
사용법1 - 기본
import pandas as pd
# 예제 데이터프레임 생성
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 32, 18, 29, 22],
    'Score': [88, 95, 79, 85, 92]
}
df = pd.DataFrame(data)
# Age 열을 기준으로 오름차순 정렬
df_sorted = df.sort_values('Age')
print(df_sorted)
출력 결과
      Name  Age  Score
2  Charlie   18     79
4      Eve   22     92
0    Alice   25     88
3    David   29     85
1      Bob   32     95
사용법 2 - 내림차순 정렬
# Age 열을 기준으로 내림차순 정렬
df_sorted = df.sort_values('Age', ascending=False)
print(df_sorted)
출력 결과
      Name  Age  Score
1      Bob   32     95
3    David   29     85
0    Alice   25     88
4      Eve   22     92
2  Charlie   18     79
사용법 3 - 여러 열 기준 정렬
# Age를 기준으로 오름차순, Score를 기준으로 내림차순
df_sorted = df.sort_values(['Age', 'Score'], ascending=[True, False])
print(df_sorted)
출력 결과
      Name  Age  Score
2  Charlie   18     79
4      Eve   22     92
0    Alice   25     88
3    David   29     85
1      Bob   32     95
사용법 4 - 인덱스 순서 유지 (inplace)
# Age를 기준으로 오름차순 정렬 (원본 데이터프레임 수정)
df.sort_values('Age', inplace=True)
print(df)
inplace=True를 사용하면 원본 데이터프레임이 수정됩니다. 이 경우, 정렬된 결과를 새로운 변수에 저장할 필요가 없습니다.
출력 결과
      Name  Age  Score
2  Charlie   18     79
4      Eve   22     92
0    Alice   25     88
3    David   29     85
1      Bob   32     95
사용법 5 - 결측값 정렬 방식 지정
import numpy as np
# 결측값 포함된 데이터프레임 생성
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Score': [88, np.nan, 79, 85, np.nan]
}
df = pd.DataFrame(data)
# 결측값을 마지막에 배치
df_sorted = df.sort_values('Score', na_position='last')
print(df_sorted)
출력 결과
      Name  Score
2  Charlie   79.0
3    David   85.0
0    Alice   88.0
1      Bob    NaN
4      Eve    NaN
사용법 6 - 인덱스 기반 정렬
# 인덱스 자체를 기준으로 정렬
df_sorted = df.sort_index(ascending=True)
print(df_sorted)
출력 결과
      Name  Score
0    Alice   88.0
1      Bob    NaN
2  Charlie   79.0
3    David   85.0
4      NaN    NaN
사용법 7 - 사용자 정의 함수로 정렬
# 이름의 길이를 기준으로 정렬
df_sorted = df.sort_values('Name', key=lambda x: x.str.len())
print(df_sorted)
출력 결과
      Name  Score
4      NaN    NaN
3    David   85.0
1      Bob    NaN
0    Alice   88.0
2  Charlie   79.0
사용법 8 - 정렬 후 인덱스 리셋
# 정렬된 데이터프레임의 인덱스를 다시 정렬
df_sorted = df.sort_values('Value', ascending=False).reset_index(drop=True)
print(df_sorted)
reset_index(drop=True)를 사용하면 기존 인덱스는 삭제되고 새로운 인덱스가 생성됩니다.
출력 결과
  Category  Value
0        C     40
1        C     30
2        A     20
3        B     15
4        A     10
5        B     10