Group by를 활용하여 특정 범주에 대해 동일한 데이테를 묶어나갈때, 특정 범주에 속한 사람 중 가장 높은 값을 가진 사람을 을 범주마다 하나씩 뽑아 비교해보고 싶은 경우가 있습니다. 이때, 활용할 수 있는 방법입니다.
저는, 이커머스 구매 데이터셋에서, 1년동안 각 고객이 구매를 진행한 날 수를 세기 위해서, 동일한 날짜의 모든 결제중 첫 결제에 대해서만 셀 필요가 있었고, 아래의 방법을 활용하여 각 결제일의 첫 결제만을 1로 두는 column을 생성하는데 활용하였습니다.
https://rfriend.tistory.com/454
[Python pandas] DataFrame을 정렬한 후에, 그룹별로 상위 N개 행 선택하기 (sort DataFrame by value and select top
이번 포스팅에서는 Python pandas의 DataFrame을 (1) 특정 칼럼을 기준으로 행을 정렬한 후에 (sort DataFrame by value in ascending/descending order)==> (2) 각 그룹별로 상위 N개 행을 가져오기 (select top N rows by group)
rfriend.tistory.com
활용) 고객 구매 데이터에서 특정 날 고객의 구매 여부를 1/0으로 하는 column 생성
# 고객의 특정 날짜의 첫 결제만 1을 갖는 함수 (특정 날짜의 active 여부 확인)
def create_first_purchase_column(df):
# '고객ID'와 '거래날짜_dtime'으로 그룹화하여 처음 등장하는 행 선택
first_purchase = df.groupby(['고객ID', '거래날짜_dtime']).head(1)
# 고객의 특정 날짜의 첫 결제만 1로
df['첫구매여부'] = 0
df.loc[first_purchase.index, '첫구매여부'] = 1
return df
create_first_purchase_column(df_all)
'머신러닝 & 딥러닝' 카테고리의 다른 글
데이터 불균형 처리(undersampling, oversampling, smote) (0) | 2024.02.05 |
---|---|
XAI, LIME (0) | 2024.02.05 |
데이터 인코딩, 기존에 등록되지 않은 변수가 입력된 경우 (0) | 2024.02.04 |
[공부기록] 부스팅(Boosting) 모델 간단 리뷰 (AdaBoost, Gradient Boost, XGBoost) (0) | 2023.12.22 |
MLOps 환경 구축 예시 (0) | 2023.12.13 |