Python: Cohort analysis (코호트 분석)

Mika·2021년 12월 30일
1

Python

목록 보기
5/5

1. Cohort analysis (코호트 분석)이란?

데이터 분석에서 자주 사용되는 분석 기법 중에 코호트(동질 집단) 분석이 있다. Cohort란 ‘특정 기간 동안 공통된 특성이나 경험을 갖는 사용자 집단‘을 의미한다.

코호트 분석을 하면 특정 기간 내 사용자 그룹의 행동이 다른 기간의 사용자 그룹의 행동과 어떻게 다른지를 쉽게 파악할 수 있다. 예를 들어 할인 이벤트 기간에 유입된 구매자들은 다른 기간에 유입된 구매자들에 비해 재구매율이 매우 낮을 수도 있다. 이처럼 코호트 분석은 연말 세일이나 발렌타인 이벤트, 신규 상품 프로모션 등 단기적 혹은 시즌성 캠페인으로 유입된 사용자의 행동 패턴을 분석, 이해하고, 이를 활용하는 데 유용하다.

전체 사용자당 매출액 추이를 봤을 때는 비즈니스가 정체되고 있는 듯한 느낌도 있었지만 코호트 분석을 해보니 신규 사용자의 첫월 매출액이 꾸준히 증가할뿐만 아니라 이후 월별 매출액도 완만히 줄어들어 전반적으로 꽤 양호한 흐름을 보인다는 것을 알 수 있다.


2. 코드로 구현하기

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
a = ('2021-01','2021-01','2021-01','2021-01','2021-01','2021-02', '2021-02','2021-02','2021-02','2021-03','2021-03','2021-03','2021-04','2021-04','2021-05')
b = ('2021-01','2021-02','2021-03','2021-04','2021-05','2021-02', '2021-03','2021-04','2021-05','2021-03','2021-04','2021-05','2021-04','2021-05','2021-05')
c = (100,80,60,40,10,96, 55,33,11,90,20,10,120,5,1)
cohort_data = pd.DataFrame({"first_visit_month":a, "revisit_month":b, "user_cnt": c})
print(cohort_data) 

1) Datetime으로 format 변경

cohort_data["first_visit_month_dt"] = pd.to_datetime(cohort_data.first_visit_month, format='%Y-%m')
cohort_data["revisit_month_dt"] = pd.to_datetime(cohort_data.revisit_month, format='%Y-%m')

2) 날짜 차이 계산

cohort_data = cohort_data.copy()
cohort_data['month_diff'] = (cohort_data['revisit_month_dt'].dt.to_period("M").view(dtype="int64")
cohort_data['first_visit_month_dt'].dt.to_period("M").view(dtype="int64"))          
print(cohort_data) 

3) Pivot으로 변경

cohort_pivot = cohort_data.pivot(index='first_visit_month', columns='month_diff', values='user_cnt')
print(cohort_pivot) 

4) 재방문율 표현

retention_rate = cohort_pivot.divide(cohort_pivot[0],axis=0)
print(retention_rate) 

5) cohort 차트 그리기

a = sns.heatmap(retention_rate, annot=True, fmt='.2%', cmap="Blues")
a.figure.set_size_inches(9, 7) 
a.set_xlabel("month_diff", size = 12) 
a.set_ylabel("first_visit_month", size = 12) 
sns.set_theme(style="whitegrid", palette="pastel")

출처 : https://analyticsmarketing.co.kr/digital-analytics/google-analytics/1527/

1개의 댓글

comment-user-thumbnail
2022년 1월 10일

파이썬 넘나 어려운것 ㅠㅠ

답글 달기