분석 보고서/그로스 해킹 분석

고객 구매 여정 분석

Data Jun 2022. 10. 17. 10:25

 최근 고객의 페이지 클릭수, 이탈률, 종료율을  데이터를 바탕으로  UX를 개선하려고 합니다

 

데이터 변수

Page 관련 데이터  EDA 이후 이탈률, 종료율 높은 사용자 여정 탐색하고 개선이 필요한 단일 페이지 및 사용자 개선  포인트 탐색하겠습니다


Page 관련 데이터 EDA

  • 이탈률:해당 페이지에서 아무런 행동도 하지않고 이탈한 비율
  • 종료율:해당 페이지가 탐색에 마지막 페이지가 된 비율 
페이지에 관련된 변수들에 대한 데이터 프레임을 생성하겠습니다
df_cus = df[['Administrative', 'Informational', 'ProductRelated', 'BounceRates', 'ExitRates', 'PageValues']]
df_cus.head(5)

df_cus = df_cus.groupby(['Administrative', 'Informational', 'ProductRelated'], as_index=False).mean()
df_cus
 
 
사용자 여정 총 3,131이며 Index를 사용하고 싶지 않을 때는 as_index=False를 설정해 줍니다

 

페이지뷰가 가장 낮은 사용자 여정을 탐색해 보겠습니다

df_cus.sort_values(by=['PageValues'], ascending=True)
PageValues를 기준으로 오름차순으로 데이터 프레임을 정렬하겠습니다

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use(['dark_background'])
sns.distplot(df_cus['PageValues']);

 

사용자 여정 그래프

사용자 여정의 페이지 클릭수는  최대 250클릭수 까지 존재하며 페이지 클릭수는  평균적으로  0~50클리수 범위에 존재 하고 있습니다

 

 


이탈률이 가장 높은 사용자 여정

 
df_cus.sort_values(by=['BounceRates'], ascending=False)
## 이탈률을 기준으로 내림차순으로 정렬한 데이터 프레임을 확인 
df_cus['BounceRates'].mean()
## 0.00746099327081189 이탈률의 평균
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use(['dark_background'])

sns.displot(df_cus, x="BounceRates");
plt.gcf().set_size_inches(16.5, 5)
사용자 여정--이탈률 그래프

 

사용자 여정의 이탈률의 최대는 20%이며 대부분 0~2.5% 것으로 확인됩니다

저는 기준을 75% 분위수로 하고  기준 이상은 이탈률이 높다고 가정하겠습니다

df_cus['BounceRates'].describe() 

##코드를 통해 75% 분위수의 값을 확인하겠습니다

##75%--0.009804



len(df_cus[df_cus['BounceRates']>0.009804])
기준보다 높은 이탈률을 가진 사용자 여정은 780존재 합니다


df_admin = pd.DataFrame(df_cus[df_cus['BounceRates']>0.009804].groupby('Administrative')['Administrative'].count().sort_values(ascending=False))
기준 이탈률을 넘은 관리자 페이지를 탐색

plt.bar(df_admin.index, df_admin['Administrative'])
 
 
 
관리자 페이지--이탈률 그래프
                                                                     X축:관리자 페이지 넘버
                                                                     Y축:개수

 

정보페이지, 제품페이지 또한 같은 방법으로 시각화 해보겠습니다

 

정보페이지--이탈률 그래프
제품페이지--이탈률 그래프

 

 

블로그에서는 종료율에 관해서는 시각화해보지 않겠지만 이탈률과 같은 방식으로 시각화하면 됩니다

 


이탈률과 종료율이 기준을 넘어가는 cnt가 가장 많은 페이지를 우선순위로 개선하겠습니다

관리페이지 개선

 
df_admin_B = df_cus[df_cus['BounceRates']>0.009804].groupby('Administrative', as_index=False)['Administrative'].count()
df_admin_B = df_admin_B.reset_index()
df_admin_B.columns = ['ID', 'BounceRates_cnt']
cnt는 개수를 의미하며 이탈률이 기준보다 높은 페이지의 개수에 대한 데이터 프레임을 만들겠습니다

df_admin_E = df_cus[df_cus['ExitRates']>0.027327].groupby('Administrative', as_index=False)['Administrative'].count()
df_admin_E = df_admin_E.reset_index()
df_admin_E.columns = ['ID', 'ExitRates_cnt']
종료율이 기준보다 높은 페이지의 개수에 대한 데이터 프레임

df_admin_merge = pd.merge(df_admin_B, df_admin_E, how='left', on='ID')
df_admin_merge['total'] = df_admin_merge['BounceRates_cnt'] +  df_admin_merge['ExitRates_cnt']
df_admin_merge.sort_values(by=['total'], ascending=False).head(5)
ID를 기준으로 이탈률과 종료율이 기준보다 높은 데이터 프레임을 병합하며 이탈률+종료율을 새로운 total 변수로 만들겠습니다 그 후 내림차순으로 데이터 프레임을 정렬하겠습니다
 
 

정보 페이지, 제품 페이지 위와 같은 방법으로 개선 페이지를 확인하면 됩니다

 

사용자 여정 개선 포인트

# ▶ 각 사용자 여정별 count(*고객이 얼마나 해당 경로를 이용했는지), mean(*해당 경로에 이탈률과 종료율의 평균)
df_jny = df.groupby(['Administrative', 'Informational', 'ProductRelated'], as_index=False)[['BounceRates', 'ExitRates']].agg(['count', 'mean']).reset_index()
df_jny

 

데이터 프레임을 내림차순으로 정렬한 후 데이터를 확인하면 사용자 여정 개선 포인트 확인할 수 있습니다

분석 결론

# ▶ (1) 개선이 필요한 단일 페이지

# 관리 : ID (0, 1, 2, 3, 4)
# 정보 : ID (0, 1, 2, 3, 5)
# 제품 : ID (8, 27, 17, 11, 36)

# ▶ (2) 개선이 필요한 사용자 여정 조합

# (0,0,1)
# (0,0,2)
# (0,0,3)
# (0,0,4)
# (0,0,5)
 
분석을 바탕으로 페이지 개선 순위를 선정하였습니다
 
 
 

출처:Fast_Campus

 

'분석 보고서 > 그로스 해킹 분석' 카테고리의 다른 글

타겟 마케팅  (1) 2022.10.21
A/B Test  (0) 2022.10.19
광고 매출 분석  (0) 2022.10.19
이커머스 데이터 활용 지표 개발  (0) 2022.10.18
리그오브레전드 승리 요인 분석  (2) 2022.10.14