728x90
import pandas as pd
import numpy as np
from pandas.api.types import CategoricalDtype
df = pd.DataFrame({
'cloth_id': [1001, 1002, 1003, 1004, 1005, 1006],
'size': ['S', 'XL', 'M', 'XS', 'L', 'S'],
})
df
cat_size_order = CategoricalDtype(
['XS', 'S', 'M', 'L', 'XL'],
ordered=True
)
df['size'] = df['size'].astype(cat_size_order) # 형 변환 필수
df.sort_values('size')
df['size'].cat.codes
# 결과
```
0 1
1 4
2 2
3 0
4 3
5 1
dtype: int8
```
df['codes'] = df['size'].cat.codes
df
df2 = pd.DataFrame({
'order_id': [1001, 1002, 1003, 1004, 1005, 1006, 1007],
'customer_id': [10, 12, 12, 12, 10, 10, 10],
'month': ['Feb', 'Jan', 'Jan', 'Feb', 'Feb', 'Jan', 'Feb'],
'day_of_week': ['Mon', 'Wed', 'Sun', 'Tue', 'Sat', 'Mon', 'Thu'],
})
cat_day_of_week = CategoricalDtype(
['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
ordered=True
)
cat_month = CategoricalDtype(
['Jan', 'Feb', 'Mar', 'Apr'],
ordered=True,
)
df2['day_of_week'] = df2['day_of_week'].astype(cat_day_of_week)
df2['month'] = df2['month'].astype(cat_month)
df2.sort_values(['month', 'day_of_week'])
df2.sort_values(['customer_id', 'month', 'day_of_week'])
참고
https://github.com/BindiChen/machine-learning/tree/main/data-analysis/018-pandas-merge
728x90
반응형
'Data Science > Pandas' 카테고리의 다른 글
pandas의 transform 함수 (apply 함수와의 차이) (0) | 2023.09.05 |
---|---|
Pandas로 datetime 다루기 (0) | 2023.09.04 |
데이터 분석 및 학습 (전체 과정) (0) | 2023.09.03 |
GridSearch를 이용한 model training (0) | 2023.09.01 |
결측치 처리 - KNNImputer (0) | 2023.09.01 |