Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas CategoricalIndex – 카테고리 재정렬(reorder_categories) 완벽 가이드

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()는 범주형 데이터의 정렬 기준이나 비교 연산 순서를 조정할 때 유용하게 활용됩니다.