Retention Chart를 Python으로 그려보자 !

sir.YOO_HWAN·2022년 5월 25일
0

GrowthHacking

목록 보기
4/9
post-thumbnail

리텐션이란 ?

retention

  • AAARRR 이라는 스타트업 그로스해킹 지표중 첫번째 R을 맡고 있다.
  • 리텐션이 왜 중요하냐면 플랫폼의 특성상 사용자의 이동이 빈번한 만큼 고객 충성도를 높이고 한 고객이 다른 고객에게 이런 경험을 공유하는 것이 무엇보다 중요한 성장지표다.사용자 경험이 반복되어야 다시 들어오고 다시 들어오는데 이렇게 계속 방문해줘야 서비스도 살아난다.
  • 무슨말인지 이해하기 힘들수도 있을것 같아서 간단한 소개 자료를 들고왔다.
  • 토스 PO 세션 두번째 [유저가 떠나지 않는 개념] 동영상에서 리텐션의 중요성을 이야기 하고 있다
    - AARRR 중에서도 리텐션 먼저 뜯어고쳐야 -> 즉 리텐션 곡선중 평평해지는 곳을 찾아야, 어플 유입이 유의미해진다는 뜻이다.

여러가지의 리텐션 차트중 파이썬으로 리텐션 차트를 그려보자

1. 필요한 데이터

먼저 고객아이디 컬럼과 방문일자 컬럼이 필요하다

  1. cust_seq , reg_dttm 이라고 가정한다.

월별 리텐션 계산을 위해서 주문한 날짜를 년 월 까지 끊어준다.

  1. df["OrderPeriod"] = df["reg_dttm"].dt.strftime("%Y-%m")
    df.head()```

유저의 첫번째 주문을 토대로 유저별 코호트 그룹을 설정한다.

# 유저의 첫번째 주문을 토대로 유저별 코호트 그룹 설정하기

df.set_index("cust_seq", inplace=True)
FirstOrder = df.groupby(df.index)["reg_dttm"].min()
FirstOrder = FirstOrder.dt.strftime("%Y-%m")
df["FirstOrder"] = FirstOrder
df.reset_index(inplace=True)

grouped = df.groupby(["FirstOrder", "OrderPeriod"])

cohorts = grouped["cust_seq"].nunique()
cohorts = cohorts.reset_index()
cohorts.head()

이름 바꿔주기

cohorts.rename({"cust_seq": "TotalUsers"}, axis=1, inplace=True)
cohorts.head()

기간별로 레이블 할당하기

each_period = cohorts["FirstOrder"].value_counts().sort_index()
# 기간별 레이블 붙이기 
cohortperiod = []

for x in each_period:
    for y in range(x):
        cohortperiod.append(y)

FirstOrder(동일한 경험)와 CohortPeriod(동일한 기간)으로 인덱스로

cohorts["CohortPeriod"] = cohortperiod
cohorts.set_index(["FirstOrder", "CohortPeriod"], inplace=True)

cohorts = cohorts["TotalUsers"].unstack(1)
cohorts.head()
  • unstack()을 하면 왼쪽방향으로 wide하게 재 구조화 가능하다.

숫자로보면 얼마나 변했는지 모르니까 %로 (백분율)로 만들어주기

user_retention = cohorts.divide(cohorts[0], axis=0)
user_retention

마지막 색칠하기

  • 색칠은 어떻게,,?
  • heatmap으로 !
#  시각화
plt.figure(figsize=(12, 8))
plt.title("Cohort Analysis - 리텐션분석", fontsize=20)

# 한글패치는 미리미리 ~ 
sns.heatmap(user_retention, annot=True, fmt=".0%")
plt.show()

  • 전반적으로 줄었다가 다시 상승하는 경향을 보인다.
    • 만약 우리가 물건을 파는 이커머스라면 이것은 긍정적인 지표이지만,
    • 우리는 정보를 제공하는 서비스운영한다면 긍정적인 신호가 아니다.
    • 만약 이게 미이탈 고객에 대한 자료라면 미 이탈고객이 매일 들어와서 미 이탈고객이 아니라 한참 안들어오다가 들어왔다는 뜻
  • 2021년 2월 고객은 한참 안들어오다가 다시 들어옴 (22년 4월 즈음에 85% 다시 재방문)
  • 22년 1월과 2월달에는 다음달까지 재방문률이 굉장히 높다.
profile
data analyst

0개의 댓글