반응형
EDA
1. RFM
rfm2["recency_score"] = pd.cut(rfm2["Recency"], bins=[0, 36, 146, 255, 328, 365], labels=label_r, include_lowest=True)
rfm2["frequency_score"] = pd.cut(rfm2["Frequency"], bins=[0, 33, 66, 99, 131, 329], labels=label_f, include_lowest=True)
rfm2["monetary_score"] = pd.cut(rfm2["Monetary"], bins=[0, 7600, 15200, 23500, 30000, 76000], labels=label_m, include_lowest=True)
rfm2["RFM_SCORE"] = rfm2["recency_score"].astype(str) + rfm2["frequency_score"].astype(str) + rfm2["monetary_score"].astype(str)
cut에 필요한 bins 구간은 히스토그램을 보고 임의로 설정했다.
히스토그램의 도수가 급격하게 변화는 구간을 기준으로 설정했다.
팀원분 중 한 분도 임의로 설정하셨는데
임의로 설정하는 것과 함께 상대적 비율 또한 명시해주셨다
아주 좋은 접근 방향이라고 생각한다.
2. 커스텀
coupon = pd.DataFrame(df.groupby('고객ID')['쿠폰상태'].value_counts() / df.groupby('고객ID')['쿠폰상태'].count())
coupon_core = pd.DataFrame(coupon.loc[([i if i != 0 else 0 for i in df['고객ID'].unique()], 'Used'), :].sort_index())
rfm3 = pd.merge(rfm2, coupon_core, how='left', on='고객ID')
rfm3 = rfm3.rename(columns={'쿠폰상태':'쿠폰사용률'})
rfm3['ratio'] = rfm3['쿠폰사용률'] / rfm3['Frequency']
rfm3.groupby('Segmentation')['ratio'].mean().sort_values()
구매 횟수 대비 쿠폰 사용률을
RFM 외 지표로 삼았다.
많이 구매하면서도, 쿠폰을 사용하지 않고도 사는 사람이
충성도가 높을 것이라는 생각에서 기인했다.
해당 지표가 낮을수록(구매횟수는 많고, 쿠폰 사용률은 낮고)
충성도가 높은 것으로 간주한다.
상위 5개 집단을 보면
어느 정도 유의미한 경향성을 보인다고 생각한다.
3. 마케팅
마케팅의 효과가 하루 단발성이 아니라는 가정 하에
이동평균(7일) 컬럼을 추가해서 총비용과의 상관계수를 확인했다.
온라인비용의 이동평균 외에는 총금액과 강한 상관관계가 있다고 할 수 없다
월별로 총금액 및 마케팅 비용의 추이를 확인했다.
월별 온라인,오프라인 비용의 개형이 유사하다
오프라인 비용은 확인 결과 1주일 단위로 조정되는 비탄력적인 요소였고
온라인 비용은 일일마다 달라지는 것으로 봐서는
온라인 비용을 사후적으로 조정한다고 생각한다
둘의 개형을 같게 유지하는 이유는 아직 밝혀내지 못했다.
월별로 집계된 총금액과 온,오프라인 비용의 추이를 보았다.
마케팅 비용이 높은 첨점 구간이 가장 높은 총비용 구간은 아니었다
마케팅의 효과가 익월에 발휘된다고 가정하면
비용의 크기가 컸던 2, 3월의 효과로 인해서
3, 4월의 총금액의 크기가 커야할텐데
4월에는 오히려 곤두박질 치는 결과가 나왔다
마케팅은 오히려 사후적으로
매출의 상승세일 때 부수적인 도움을 주는 요소라고 생각된다.
반응형
'TIL' 카테고리의 다른 글
내배캠 TIL 55일차 (0) | 2024.04.05 |
---|---|
내배캠 TIL 54일차 (0) | 2024.04.04 |
내배캠 TIL 52일차 (0) | 2024.03.29 |
내배캠 TIL 51일차 (0) | 2024.03.28 |
내배캠 TIL 50일차 (0) | 2024.03.27 |