太酷了!手把手教你用 Python 繪制桑基圖! | 用戶行為路徑分析
作者:python與數(shù)據(jù)分析
鏈接:https://www.jianshu.com/p/16ccab26360f
公眾號(hào)后臺(tái)回復(fù):「Python繪制桑基圖」,即可獲取本文完整數(shù)據(jù)。
對于很多產(chǎn)品來說,分析用戶行為都是非常重要的。用戶分析能推動(dòng)產(chǎn)品的迭代,為精準(zhǔn)營銷提供一些定制化服務(wù),驅(qū)動(dòng)我們做一些產(chǎn)品上的決策。常用的用戶專題分析方法,包括用戶分群、留存分析、轉(zhuǎn)化分析、行為路徑分析和事件分析、用戶畫像、用戶增長等。
那么,本篇文章會(huì)為大家重點(diǎn)介紹用戶行為路徑分析,并結(jié)合可視化圖表——桑基圖,來實(shí)現(xiàn)落地。
一、什么是用戶路徑?
用戶路徑,就是用戶在網(wǎng)站或 APP 中的訪問行為路徑,為了衡量網(wǎng)站/APP的優(yōu)化效果或者營銷推廣效果,了解用戶的行為偏好,要對訪問路徑的數(shù)據(jù)進(jìn)行分析。
二、用戶路徑分析的價(jià)值
用戶路徑分析和轉(zhuǎn)化分析有點(diǎn)類似,轉(zhuǎn)化分析能告訴我們最終有多少用戶成功轉(zhuǎn)化,多少用戶流失了。可這些流失的用戶都去了哪?他們在流失前都有什么行為?這些問題轉(zhuǎn)化分析都無法告訴我們,因此我們需要對用戶的行為路徑進(jìn)行分析,以幫助我們更深入了解流失背后的原因。行為路徑分析相比于轉(zhuǎn)化分析記錄的信息要更廣。
用戶路徑分析,以目標(biāo)事件為起點(diǎn)|終點(diǎn),通過描述用戶的行為路徑,可以查看某個(gè)事件節(jié)點(diǎn)用戶的流向,科學(xué)的路徑分析能夠帶來以下價(jià)值:
可視化用戶流向,對海量用戶的行為習(xí)慣形成宏觀了解
通過用戶路徑分析,可以將整個(gè)用戶路徑的上下游進(jìn)行可視化展示。即可看到用戶群體的登錄,跳轉(zhuǎn)、流失、成交等事件的情況。運(yùn)營人員可通過用戶整體的行為路徑找到不同行為間的關(guān)系,挖掘規(guī)律并找到瓶頸。
定位影響轉(zhuǎn)化的因素,推動(dòng)產(chǎn)品的優(yōu)化與改進(jìn)
路徑分析對產(chǎn)品設(shè)計(jì)的優(yōu)化與改進(jìn)有著很大的幫助,了解用戶從登錄到購買整體行為的主路徑和次路徑,根據(jù)用戶路徑中各個(gè)環(huán)節(jié)的轉(zhuǎn)化率,發(fā)現(xiàn)用戶的行為規(guī)律和偏好,也用于監(jiān)測和定位用戶路徑走向中存在的問題,判斷影響轉(zhuǎn)化的主要因素和次要因素,也可以發(fā)現(xiàn)某些冷門的功能點(diǎn)。
三、路徑分析與漏斗分析的區(qū)別
行為路徑分析是用來追蹤用戶從某個(gè)事件開始到某個(gè)事件結(jié)束過程中的全部動(dòng)線的分析方法。轉(zhuǎn)化漏斗是人為定義的,而對于用戶的行為路徑,我們雖然可以通過產(chǎn)品設(shè)計(jì)進(jìn)行引導(dǎo),但卻無法控制。因此我們分析用戶的行為路徑可以了解用戶的實(shí)際操作行為,讓產(chǎn)品順應(yīng)用戶,通過優(yōu)化界面交互讓產(chǎn)品用起來更加流暢和符合用戶習(xí)慣,產(chǎn)出更多價(jià)值。

用戶行為路徑:桑基圖

所以,簡單來說:
漏斗分析:人為設(shè)定一條或者若干條漏斗,先有假設(shè)再數(shù)據(jù)驗(yàn)證。
路徑分析:基于用戶所有行為,挖掘出若干條重要的用戶路徑,先有數(shù)據(jù)再驗(yàn)證假設(shè)。
四、用代碼實(shí)現(xiàn)—桑基圖
桑基圖,它的核心是對不同點(diǎn)之間,通過線來連接。線的粗細(xì)代表流量的大小。
很多工具都能實(shí)現(xiàn)桑基圖,比如:Excel、tableau,我們今天要用 Pyecharts 來繪制。
因?yàn)闆]有用戶行為路徑相關(guān)的公開數(shù)據(jù),所以本次實(shí)現(xiàn)可視化是根據(jù)泰坦尼克號(hào),其生存與遇難的人的數(shù)據(jù),來分析流向路徑。學(xué)會(huì)思路,你也可以換成自己公司的用戶行為埋點(diǎn)數(shù)據(jù)。
讀取數(shù)據(jù)
數(shù)據(jù)來源:https://www.kaggle.com/c/titanic
from?pyecharts?import?options?as?opts
from?pyecharts.charts?import?Sankey
import?pandas?as?pd
data?=?pd.read_excel('/Users/wangwangyuqing/Desktop/train.xlsx')
data
整理數(shù)據(jù)結(jié)構(gòu):父類→子類→值
從父類到子類,每相鄰的兩個(gè)分類變量都需要計(jì)算,使用 Pandas 中數(shù)據(jù)透視表,計(jì)算后的數(shù)據(jù)縱向合并成三列。
lis?=?data.columns.tolist()[:-1]
lis1?=?lis[:-1]
lis2?=?lis[1:]
data1?=?pd.DataFrame()
for?i?in?zip(lis1,lis2):??
????datai?=?data.pivot_table('ID',index=list(i),aggfunc='count').reset_index()
????datai.columns=[0,1,2]
????data1?=?data1.append(datai)
data1
生成節(jié)點(diǎn)數(shù)據(jù)
需要把所有涉及到的節(jié)點(diǎn)去重規(guī)整在一起。列表內(nèi)嵌套字典的形式去重匯總。
#?生成nodes
nodes?=?[]
#?先添加幾個(gè)頂級的父節(jié)點(diǎn)
nodes.append({'name':'C港口'})
nodes.append({'name':'Q港口'})
nodes.append({'name':'S港口'})
#?添加其他節(jié)點(diǎn)
for?i?in?data1[1].unique():????
????dic?=?{}????
????dic['name']?=?i????
????nodes.append(dic)
nodes
組織數(shù)據(jù):定義節(jié)點(diǎn)和流量
數(shù)據(jù)從哪里流向哪里,流量(值)是多少,循環(huán)+字典來組織數(shù)據(jù)
links?=?[]
for?i?in?data1.values:????
????dic?=?{}????
????dic['source']?=?i[0]????
????dic['target']?=?i[1]????
????dic['value']?=?i[2]
????links.append(dic)
links
數(shù)據(jù)可視化
c?=?(
????Sankey(init_opts=opts.InitOpts(width="1200px",?height="800px",theme='westeros'))
????.add(
????????"",
????????nodes=nodes,
????????links=links,
????????linestyle_opt=opts.LineStyleOpts(opacity=0.2,?curve=0.5,?color="source"),
????????label_opts=opts.LabelOpts(position="right"),
????)
????.set_global_opts(title_opts=opts.TitleOpts(title="桑基圖"))
????.render("/Users/wangwangyuqing/Desktop/image.html")
)

五、總結(jié)
桑基圖是分析用戶路徑的有效方法之一,能非常直觀地展現(xiàn)用戶旅程,幫助我們進(jìn)一步確定轉(zhuǎn)化漏斗中的關(guān)鍵步驟,發(fā)現(xiàn)用戶的流失點(diǎn),找到有價(jià)值的用戶群體,看用戶主要流向了哪里,發(fā)現(xiàn)用戶的興趣點(diǎn)以及被忽略的產(chǎn)品價(jià)值,尋找新的機(jī)會(huì)。
推薦閱讀
用 Python 批量提取 PDF 的圖片,并存儲(chǔ)到指定文件夾
用 Python 批量提取 PDF 的表格數(shù)據(jù),保存為 Excel
太強(qiáng)了!Python 開發(fā)桌面小工具,讓代碼替我們干重復(fù)的工作!

