一、 用户行为路径分析背景知识
用户行为路径分析是一种监测用户流向,从而统计产品使用深度的分析方法。它主要根据每位用户在App或者网站中的点击行为日志,分析用户在App活网站中各个模块的流转规律,挖掘用户的访问或点击模式,进儿实现一些特定的业务用途。
用户路径的分析转化结果通常以桑基图形式展现,以目标事件为起点/终点,详细查看后续/前置路径的流向,可以详细查看某个节点事件的转化情况。总的来说,行为路径分析有如下作用:
1.可视化用户流向,对海量用户的行为习惯形成宏观了解。
2.定位影响转化的主次因素,使产品的优化与改进有的放矢。
二、金融行业用户行为路径漏斗转化分析案例
1.案例背景
消费金融也就是大家所理解的互联网金融或者网络贷款,主要就是为个人提供以消费为目的的消费贷款,一般来说贷款额度都不高。我们大家都会用支付宝,里面的借呗和花呗就是消费贷款的两种形式,花呗是有消费场景的消费贷,你必须在购买商品或者吃饭结账向商家付款时才能使用;而借呗则是现金贷,直接将现金转入你的银行卡里。
本案例中的数据为某贷款平台的流量表与贷款审核表,通过jupyter notebook,使用python的pandas和numpy包完成分析,观察用户行为路径漏斗转化情况。
2.数据结构
表名 | 字段 | 注释 |
---|---|---|
plat_flow | date | 日期 |
plat_flow | PV | 页面浏览量 |
plat_flow | UV | 独立访客量 |
plat_flow | regist_cnt | 注册数 |
plat_flow | regist_rate | 访客注册率 |
plat_flow | active_cnt | 激活数 |
plat_flow | active_rate | 激活访问率 |
loans_check | ID | 用户ID |
loans_check | date | 申请日期 |
loans_check | new_cus | 是否新用户 |
loans_check | lending | 是否放贷 |
3.数据处理
-
1.导包、导入数据
#导包
import pandas as pd
import numpy as np
import pymysql
import sqlalchemy
# 读取数据 plat_flow:平台流量表 ;loans_check:贷款审核表
# 连接数据库 ,使用sql读取数据
# 连接数据库('mysql+pymysql://用户名:密码@ip:端口号/库名')
engine = sqlalchemy.create_engine('mysql+pymysql://****:****@localhost:3306/fhd')
sql_flow='select * from plat_flow'
sql_check='select * from loans_check'
dt_flow=pd.read_sql(sql=sql_flow,con=engine)
dt_check=pd.read_sql(sql=sql_check,con=engine)
#查看平台流量表情况
dt_flow.head()
输出:#查看贷款审核表情况
dt_check.head()
输出:
-
2.计算每日申请贷款人数、审批贷款人数、放贷率
#先将表分成新用户表和老用户表。分别计算每日贷款人数和放贷率
#dt_check_1 新用户贷款审核表
dt_check_1 = dt_check[dt_check['new_cus']==1]
#dt_check_2 老用户贷款审核表
dt_check_0 = dt_check[dt_check['new_cus']==0]
#对新用户贷款审核表进行数据透视生成表pt_1
pt_1=pd.pivot_table(data=dt_check_1,index=['date'],values=['lending'],aggfunc=[np.sum,'count'])
#重命名
pt_1.columns=['new_loans_num','new_apply_num']
#重置索引
pt_1=pt_1.reset_index()
#计算新用户放贷率
pt_1['new_loans_rate']=pt_1['new_loans_num']/pt_1['new_apply_num']
#查看新用户贷款情况表,新用户放贷数、新用户申请数、新用户放贷率
pt_1.head()
输出:#对老用户贷款审核表进行数据透视生成表pt_0
pt_0=pd.pivot_table(data=dt_check_0,index=['date'],values=['lending'],aggfunc=[np.sum,'count'])
#重命名
pt_0.columns=['old_loans_num','old_apply_num']
#重置索引
pt_0=pt_0.reset_index()
#计算老用户放贷率
pt_0['old_loans_rate']=pt_0['old_loans_num']/pt_0['old_apply_num']
#查看老用户贷款情况表,老用户放贷数、老用户申请数、老用户放贷率
pt_0.head()
输出:#计算老用户的复借率。
#本案例中老用户的定义:前一天放款的新用户,第二天继续借款就是老用户。(暂不考虑存量老用户)
#每天的老客户数量为新用户前一天的放贷数量,因此需要取4月30日到5月29日的新用户放贷数,来构成5月1日到5月30日的老用户数。
#从新用户贷款情况表取出前29天放贷数据,作为5月2日到5月30日的老用户数
old=list(pt_1['new_loans_num'])[0:29]
#经查询4月30日的新用户放贷数为24,插入数据。
old.insert(0,24)
#生成老用户复借情况表pt_0_m
data={'date':list(pt_1['date']),'old_num':old}
dt_old=pd.DataFrame(data)
pt_0_m=pd.merge(pt_0,dt_old,how='left',on=['date'])
pt_0_m['repeat_rate']=pt_0_m['old_apply_num']/pt_0_m['old_num']
pt_0_m.head()
输出:
-
3计算各节点路径转化率并绘图
#连接平台流量表,新老用户贷款情况表,组成一张用户路径总表dt_1,计算各节点转化率
dt=pd.merge(dt_flow,pt_1,how='left',on='date')
dt_1=pd.merge(dt,pt_0_m,how='left',on='date')
dt_1.head()
输出:#汇总求和数据
dt_2=dt_1.drop(['date'],axis=1)
dt_2.loc['Row_sum']=dt_2.apply(lambda x:x.sum())
dt_3=dt_2[dt_2.index=='Row_sum'][['PV','UV','regist_cnt','active_cnt','new_apply_num','new_loans_num']]
#将数据行列转化,便于漏斗图的绘制
dt_3_s=pd.DataFrame(dt_3.stack()).reset_index().iloc[:,1:3]
dt_3_s.columns=['指标','汇总']
dt_3_s
输出:#进行漏斗图的绘制
from plotly import graph_objects as go
trace = go.Funnel(
y=dt_3_s['指标'],
x=dt_3_s['汇总'],
textinfo='value+percent initial',
marker=dict(color=['deepskyblue','lightsalmon','tan','teal','silver','yellow']),
connector={'line':{'color':'royalblue','dash':'solid','width':1}}
)
data=[trace]
fig=go.Figure(data)
fig.show()
输出:三、知识补充
1.指标释义
- PV(page view)/UV(unique visitor):分别指页面浏览量和独立访客量,每次用户对页面或标签的点击都会记一次PV。
- 注册用户数:只有注册过的用户才有可能进一步发生转化行为,一个平台的注册用户数衡量了该平台当前已经积累的有效用户的数量。
- 激活/活跃用户数:激活用户代表一个用户在注册完成后成功登录一次。而活跃用户代表一个用户在登录后完成了访问。
- 申请/放款用户数活跃用户中的一部分会完成贷款的申请行为,这部分用户被记为申请用户。申请用户会被审核,通过审核并成功放款的用户会记为放款用户。
- 复借用户数:指借款次数超过一次的用户数,复借行为往往也需要结合时间维度进行考量,因为用户复借行为出现的时间并不固定。
2.用户行为路径分析方法
转化漏斗
转化漏斗是针对特定模块与事件节点的路径分析。无论是新用户的引导、某个业务流程还是某一次运营活动,涉及到有流程转化的都可以建立漏斗来分析。在分析过程中,可以观察整体的转化率是否符合行业水准,哪些步骤转化率还有优化空间?可以通过细分维度发现导致转化率低的因素有哪些,也可以通过查看流失环节的其他使用路金,做出正对性的引导。
它适用于对产品运营中的关键环节进行分析、监控,找到其中薄弱的环节,通过用户引导或者产品迭代来优化,提升转化效果。