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

Python Pandas CategoricalIndex – add_categories()로 새로운 카테고리 추가하기

Pandas에서 CategoricalIndex는 값이 제한된 수의 카테고리(범주) 중 하나만 가질 수 있는 인덱스입니다. 분석 도중 기존에 정의되지 않은 새로운 범주가 필요해질 때가 있는데, 이럴 때 add_categories() 메서드를 사용하면 기존 인덱스의 값을 그대로 유지한 채 새로운 카테고리를 손쉽게 추가할 수 있습니다.

라이브러리 임포트

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

CategoricalIndex 생성하기

"categories" 매개변수를 사용해 범주형 데이터의 카테고리를 설정하고, "ordered" 매개변수를 True로 지정하면 순서가 있는(ordered) 범주형 인덱스로 만들 수 있습니다.

catIndex = pd.CategoricalIndex(["p", "q", "r", "s", "p", "q", "r", "s"], ordered=True, categories=["p", "q", "r", "s"])

생성된 CategoricalIndex를 출력해 확인합니다.

print("CategoricalIndex...\n", catIndex)

새로운 카테고리 추가하기

add_categories() 메서드에 추가하고자 하는 새로운 카테고리를 리스트 형태로 전달합니다. 이때 새로운 카테고리는 기존 카테고리 목록의 마지막(가장 높은) 위치에 추가됩니다.

print("\nCategoricalIndex after adding new categories...\n", catIndex.add_categories(["a", "b", "c", "d"]))

전체 예제 코드

지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.

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("\nDisplaying Categories from CategoricalIndex...\n", catIndex.categories)

# add_categories()로 새로운 카테고리 추가
# 새로운 카테고리는 목록의 마지막(가장 높은) 위치에 포함됩니다.
print("\nCategoricalIndex after adding new categories...\n", catIndex.add_categories(["a", "b", "c", "d"]))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

CategoricalIndex...
CategoricalIndex(['p', 'q', 'r', 's', 'p', 'q', 'r', 's'], categories=['p', 'q', 'r', 's'], ordered=True, dtype='category')

DisplayingCategories from CategoricalIndex...
Index(['p', 'q', 'r', 's'], dtype='object')

CategoricalIndex after adding new categories...
CategoricalIndex(['p', 'q', 'r', 's', 'p', 'q', 'r', 's'], categories=['p', 'q', 'r', 's', 'a', 'b', 'c', 'd'], ordered=True, dtype='category')

실행 결과를 보면, add_categories(["a", "b", "c", "d"]) 호출 후 카테고리 목록이 ['p', 'q', 'r', 's']에서 ['p', 'q', 'r', 's', 'a', 'b', 'c', 'd']로 확장된 것을 확인할 수 있습니다. 반면 인덱스에 저장된 실제 값들은 변하지 않으며, 순서(ordered=True) 속성도 그대로 유지됩니다.