tak's data blog

데이터프레임 행간의 계산 본문

이것저것

데이터프레임 행간의 계산

hyuntaek 2022. 7. 16. 22:00
반응형
SMALL

 

 

보통 고객이 이탈할 때, 재구매를 할 때 등 기간을 구하기 위해 고유한 인덱스를 기준으로 정렬해 위아래의 차이로 계산한다.

 

여태까지 아래와 같이 비효율적이게 for문으로 조건을 주어 해결했었다.

새로운 데이터프레임, 고유한 유저별 데이터프레임을 생성해 계산한 후 concat하는 방식으로 진행했었다...

from tqdm import tqdm

reorder_day = pd.DataFrame()
de_lp['reorder_day'] = 0
u_list = de_lp[de_lp['reorder'] == 'O']['cust'].unique()

for i in tqdm(u_list):
    reorder_df = de_lp[de_lp['cust'] == i]
    reorder_df[['reorder_day']] = reorder_df[['date']].diff()
    reorder_day = pd.concat([reorder_day, reorder_df])  
    
    
reorder_day['reorder_day'] = reorder_day['reorder_day'].apply(lambda x: x.days)

 

역시 구글링이란 위대한 것 같다. groupby.diff를 이용해 바로 행간의 계산을 할 수 있다는 점을 배웠다.

이렇게 하면 좀 더 빠르게 해결이 가능하다. groupby로 응용할 생각을 못했다니 ㅠ

de_lp['reorder_day'] = de_lp.groupby(['cust'])['date'].diff()

 

반응형
LIST

'이것저것' 카테고리의 다른 글

RFM 분석  (0) 2023.07.03
푸리에 변환(fourier transform)  (0) 2023.02.25
효율적인 코드 작성(고객별 누적 주문횟수 계산)  (0) 2022.08.02