데이터를 정렬하거나 groupby를 사용할 때, 우리가 원하는 순서대로 결과를 보고 싶을 때가 있습니다. 예를 들어 옷 사이즈 데이터를 다룰 때, 알파벳 순서가 아니라 XS → S → M → L → XL 순서대로 정렬되고 집계되면 훨씬 직관적이겠죠?
이럴 때 바로 Category 타입을 활용하면 됩니다.
Category 타입으로 변환하기
pd.Categorical() 함수에 데이터를 넣고, ordered=True로 설정하면 범주형 데이터에 순서를 부여할 수 있습니다.
또한 categories 파라미터에 원하는 순서를 직접 지정할 수 있습니다.
import pandas as pd
clothes_df['size'] = pd.Categorical(
clothes_df['size'],
ordered=True,
categories=['XS', 'S', 'M', 'L', 'XL']
)
이렇게 하면 size 컬럼이 단순한 문자열이 아니라, 순서를 가진 범주형(category) 데이터로 바뀝니다.
정렬하기
이제 sort_values를 해보면 알파벳 순서가 아니라, 우리가 지정한 XS → S → M → L → XL 순서대로 정렬됩니다.
clothes_df.sort_values(by='size')
Groupby 활용
groupby를 적용해도 순서가 반영됩니다.
clothes_df.groupby('size').mean()
Category 타입 덕분에, 집계 결과도 사이즈 순서대로 보기 쉽게 정렬됩니다.
정리
- pd.Categorical()로 범주형 데이터를 만들 수 있음
- ordered=True와 categories 파라미터로 원하는 순서 지정 가능
- 정렬(sort_values), 집계(groupby), 시각화(seaborn)에 모두 반영
💡 Category 타입은 단순히 메모리를 아끼는 용도뿐만 아니라, 데이터를 논리적인 순서대로 다루는 데 꼭 필요한 기능입니다.
'파이썬 > 데이터프레임 다루기' 카테고리의 다른 글
| Pandas에서 loc과 iloc의 차이 (1) | 2025.08.31 |
|---|---|
| Pandas에서 Resample로 시간 간격 묶기 (0) | 2025.08.31 |
| Pandas에서 Timedelta 이해하기 (0) | 2025.08.31 |
| Pandas에서 Timedelta 다루기 (0) | 2025.08.31 |
| Pandas에서 loc와 iloc 슬라이싱 규칙 정리 (0) | 2025.08.31 |