머신러닝 & 딥러닝

groupby를 활용하여 상위 k 개 추출

에멜라 2024. 2. 16. 17:27

 

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)