Pandas에서 CategoricalIndex의 카테고리 순서를 변경하려면 reorder_categories() 메서드를 사용합니다. 이 메서드를 활용하면 기존에 정의된 카테고리의 순서를 원하는 대로 손쉽게 재배열할 수 있습니다.
1. 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
2. CategoricalIndex 생성
CategoricalIndex는 제한적이고 대개 고정된 개수의 가능한 값(카테고리)만 가질 수 있습니다. categories 매개변수로 카테고리를 지정하고, ordered 매개변수를 사용하면 해당 범주형 데이터를 순서가 있는(ordered) 형태로 다룰 수 있습니다.
catIndex = pd.CategoricalIndex(["p", "q", "r", "s", "p", "q", "r", "s"], ordered=True, categories=["p", "q", "r", "s"])
3. CategoricalIndex 확인 및 카테고리 조회
생성된 CategoricalIndex를 출력해 확인합니다.
print("CategoricalIndex...\n", catIndex).categories 속성으로 현재 설정된 카테고리 목록을 조회할 수 있습니다.
print("\nCategoricalIndex의 카테고리 표시...\n", catIndex.categories)4. reorder_categories()로 카테고리 재정렬
reorder_categories() 메서드에 새로운 순서의 카테고리 목록을 매개변수로 전달하면 카테고리가 재정렬됩니다. 단, 새로 전달하는 카테고리는 기존 카테고리와 동일한 집합이어야 하며, 누락되거나 추가된 항목이 있으면 오류가 발생합니다.
print("\n카테고리 재정렬 후 CategoricalIndex...\n", catIndex.reorder_categories(["r", "s", "q", "p"]))전체 예제 코드
지금까지의 내용을 하나의 코드로 정리하면 다음과 같습니다.
import pandas as pd
# CategoricalIndex는 제한적이며 대개 고정된 개수의 가능한 값(카테고리)만 가질 수 있음
# "categories" 매개변수로 카테고리 지정
# "ordered" 매개변수로 순서가 있는 범주형으로 처리
catIndex = pd.CategoricalIndex(["p", "q", "r", "s", "p", "q", "r", "s"], ordered=True, categories=["p", "q", "r", "s"])
# CategoricalIndex 출력
print("CategoricalIndex...\n", catIndex)
# 카테고리 조회
print("\nCategoricalIndex의 카테고리 표시...\n", catIndex.categories)
# reorder_categories()로 카테고리 재정렬
# 새로운 순서의 카테고리를 매개변수로 전달
print("\n카테고리 재정렬 후 CategoricalIndex...\n", catIndex.reorder_categories(["r", "s", "q", "p"]))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
CategoricalIndex... CategoricalIndex(['p', 'q', 'r', 's', 'p', 'q', 'r', 's'], categories=['p', 'q', 'r', 's'], ordered=True, dtype='category') CategoricalIndex의 카테고리 표시... Index(['p', 'q', 'r', 's'], dtype='object') 카테고리 재정렬 후 CategoricalIndex... CategoricalIndex(['p', 'q', 'r', 's', 'p', 'q', 'r', 's'], categories=['r', 's', 'q', 'p'], ordered=True, dtype='category')
정리
실행 결과를 보면 데이터 값 자체는 그대로 유지되면서, 카테고리의 순서만 ['p', 'q', 'r', 's']에서 ['r', 's', 'q', 'p']로 변경된 것을 확인할 수 있습니다. 이처럼 reorder_categories()는 범주형 데이터의 정렬 기준이나 비교 연산 순서를 조정할 때 유용하게 활용됩니다.