본문 바로가기
Python Library/Pandas

[Pandas] 데이터 타입 - 카테고리 자료형

by 홍월이_ 2022. 12. 9.

아래 내용들은 제가 혼자 학습하면서 정리한 내용들입니다.

'부족한 내용' 혹은 '잘못된 내용'이 있을 수 있습니다.

댓글 남겨주시면 더욱 공부하고 수정하도록 하겠습니다.

감사합니다.


파이썬/판다스 짤막 지식

 

 

Categorical Dtype

데이터를 전처리 할때 카테고리 데이터를 인코딩해줘야 할 필요가 있다.

이때, Pandas에는 범주형 데이터를 표현할 수 있는 Categorical형 이라고 하는 특수한 데이터 형이 존재한다.

 

 

Categorical 메서드

범주형 데이터를 담고 있는 Series는 특화된 문자열 메서드인 Series.str과 유사한 특수 메서드인 cat 속성이 있다.

이를 통해 categories와 codes나 categorical 메서드 등에 쉽게 접근할 수 있다.

 

 

예시를 위한 데이터프레임 생성

# 카테고리 데이터 처리 
df = pd.DataFrame(
    {'Num' : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
     'Grade' : ['A', 'A', 'B', 'B', 'C', 'C', 'A', 'A', 'B', 'B']}
)
df
 

 

 

GradeCategory 컬럼을 생성

df['Grade'] 로 컬럼은 Series type이다.

# astype('category') 사용 - 나오는 순서대로 0, 1, 2 ... 부여
df['GradeCategory'] = df['Grade'].astype('category').cat.codes
df
 

 

위 방법으로 카테고리 타입을 처리하게 되면 Grade에서 나오는 순서대로 Categorical Dtype이 부여된다.

 

카테고리 이름을 지정하는 방법을 알아보자.

 

카테고리명 직접 입력

# 카테고리명 직접 입력
categoriesList = ['C', 'A', 'B']
df['GradeCategory'] = pd.Categorical(df['Grade'], categories = categoriesList, ordered = True).codes
df
 

카테고리명을 지정하는 리스트를 만들었다. 생성된 카테고리는 정의한 리스트의 인덱스가 된다.

 

 

딕셔너리를 이용한 카테고리명 직접 지정

파이썬의 딕셔너리 자료형을 이용하면 카테고리명을 하나하나 직접 지정해 줄 수 있다.

이때는 map() 이라는 메서드를 이용한다.

# 카테고리 직접 지정
category_map = {'B' : 0, 'C' : 1, 'A' : 2, 'D' : 3}
df['GradeCategory'] = df['Grade'].map(category_map)
df
 

 

 

여러가지 Categorical 메서드

메서드
설명
add_categories
기존 카테고리 끝에 새로운 카테고리 추가
as_ordered
카테고리가 순서를 가지도록 함
as_unordered
카테고리가 순서를 가지지 않도록 함
remove_categories
카테고리를 제거,해당 카테고리에 속한 값들은 null로 설정됨
remove_unused_categories
데이터에서 관측되지 않는 카테고리 삭제
rename_categories
카테고리 이름을 지정한 이름으로 변경
reorder_categories
rename_categories와 유사하나,새로운 카테고리가 순서를 가짐
set_categories
카테고리를 지정한 새로운 카테고리로 변경카테고리 추가 혹은 삭제 가능

 

 

 

댓글