甲状腺穿刺器新闻 可视化神器Plotly玩转漏斗图

宝马娱乐世界第一网站

Welcome!

公司logo
甲状腺穿刺器新闻 可视化神器Plotly玩转漏斗图
浏览: 发布日期:2021-07-22

本文转载自微信公多号「尤而幼屋」,作者Peter  。转载本文请有关Peter的公多号。

意识漏斗图

漏斗图是网站出售周围一栽相等常用的图外,主要是用来分析在各个阶段的流失和转化情况。比如在某个商城中,吾们统计用户在分别阶段的人数来分析转化率:

商城UV:商城每天的访问人数 搜索人数:在商城有过搜索走为的用户数 添购人数:有添购走为的用户数 挑交订单:有多少用户挑交订单 点击支付:挑交订单之后有多少用户点击支付按钮 支付成功:最后支付成功的用户数

从搜索人数开起到支付成功,每个阶段用户都存在必定的流失,漏斗图就能很益地将这栽流失和转化情况表现出来。

除往柱状图、饼图、折线图,漏斗图答该是本身在做事画的最为屡次的一栽图外。下面吾们经历模拟某个电商网站的用户走为来绘制漏斗图。

团体成果

望一个漏斗图的团体成果:

视频

导入库

基于两栽手段实现:

plotly_express :px plotly.graph_objects:go
import pandas as pd import numpy as np  # plotly两个绘图接口 import plotly_express  as px import plotly.graph_objects as go 
基于px实现

基础漏斗图

模拟一份商城数据:

data1 = pd.DataFrame({     "number": [1200,900,700,400,180,100],     "stage": ["涉猎网站","搜索","添购","挑交订单","点击支付","支付成功"]} ) data1 

绘制一个基础漏斗图:甲状腺穿刺器新闻

# 绘图 fig = px.funnel(     data1,  # 待绘图数据     x="number",  # x轴的数据     y="stage"  # y轴的数据 )  fig.show() 

吾们还能够添上一个颜色参数color:

# 添上颜色参数color  fig = px.funnel(   data1,   x="number",   y="stage",   color="number"  # 颜色参数 )  fig.show() 

倘若吾们的颜色竖立成number列,用数值意义益似阻止确,更益地答该是分别的阶段外示,换成stage:

# 添上颜色参数color  fig = px.funnel(   data1,   x="number",   y="stage",   color="stage"   # !!!改成stage )  fig.show() 

望生成的漏斗图:最上面的是支付成功,清淡吾们期待的是数值最大的在最上面,所以吾们将传入的数据翻转一下:

# 添上颜色参数color  fig = px.funnel(   data1[::-1],   # !!!数据翻转   x="number",   y="stage",   color="stage"   # !!!改成stage )  fig.show() 

分组漏斗

分组漏斗外示的含义将分别组别的漏斗图放在一个画布中,比如:望今年3月和2020年3月的数据对比情况,这叫做同比

同比:相通时期的对比,比如:2021年3月和2020年3月

环比:相邻时期的对比,比如:2021年3月和2021年2月

1、2020年3月份数据甲状腺穿刺器新闻

2、2021年3月份数据

3、行使concat函数相符并两组数据

4、绘制漏斗图

# 绘图  fig = px.funnel(df3,x="number",y="stages",color="time") fig.show() 

绘制面积漏斗图

照样行使最上面的数据:

fig = px.funnel_area(     data1,     names = "stage",     values = "number", )  fig.show() 

吾们不悦目察到:面积漏斗图默认绘制的百分比甲状腺穿刺器新闻,而清淡漏斗图是数值

基于go实现

绘制基础漏斗图

from plotly import graph_objects as go  fig = go.Figure(go.Funnel(     x=[1000,800,400,100],     y=["涉猎网站","添购","点击支付","支付成功"] ))  fig.show() 

转折漏斗图的颜色和边框

from plotly import graph_objects as go  fig = go.Figure(go.Funnel(     x=[1000,800,400,100],  # 数据     y=["涉猎网站","添购","点击支付","支付成功"], # 每个阶段的名称     textposition = "inside",  #  文本位置:['inside', 'outside', 'auto', 'none']      textinfo = "value + percent initial",   # 表现文本新闻 ['label', 'text', 'percent initial', 'percent previous', 'percent total', 'value'] 前线选项的肆意组相符     opacity = 0.65,      marker = {"color": ["deepskyblue", "lightsalmon", "tan", "silver"],               "line": {"width": [4, 2, 3, 1, 1],                         "color": ["wheat", "wheat", "blue", "yellow"]}},     connector = {"line": {"color": "royalblue", "dash": "dot", "width": 3}})     )  fig.show() 

吾们必要仔细textinfo参数的行使,它有3栽行使手段:

percent initial:相对于初起值 percent previous:相对于前一个值 percent total:相对于团体数值

上面这个漏斗图行使的是percent initial(相对于初起值),百分比是如许来的:

1000/1000 = 100% 800 / 1000 = 80% 400 / 1000 = 40% 100 / 1000 = 10% 

倘若是percent previous:

1000/1000 = 100% 800 / 1000 = 80% 400 / 800 = 50% 100 / 400 = 25% 

倘若是percent total:

吾们望望第一个百分比是如何计算的:

分组漏斗

from plotly import graph_objects as go  stage = ["涉猎网站","添购","点击支付","支付成功"]  fig = go.Figure()  fig.add_trace(go.Funnel(     name = "2020年3月",  # 图形轨迹名称     x = [1000,800,400,200],  # 数据     y = stage, # 每个阶段名称     orientation = "h",  # 方位     textposition = "inside",  # 文本内容的位置     textinfo = "value+percent previous"  # 表现文本内容 ))   fig.add_trace(go.Funnel(     name = "2021年2月",   # 名称和数据必要转折     x = [1200,900,500,240],       y = stage,      orientation = "h",       textposition = "inside",       textinfo = "value+percent total"   ))  fig.add_trace(go.Funnel(     name = "2021年3月",  # 名称和数据必要转折     x = [1500,1000,450,300],       y = stage,      orientation = "h",       textposition = "inside",       textinfo = "label+percent initial"   ))   fig.show() 

在上面的图中,既能够不悦目察到同比情况(2020年3月和2021年3月),也能够不悦目察到环比情况(2021年3月和2月)

面积漏斗

from plotly import graph_objects as go  fig = go.Figure(go.Funnelarea(     text = ["涉猎网站","添购","点击支付","支付成功"],     values = [5000, 2000, 800, 500],  ))  fig.show() 

竖立面积漏斗的颜色和边框

from plotly import graph_objects as go  fig = go.Figure(go.Funnelarea(     values = [3000, 2000, 800, 500],      text = ["涉猎网站","添购","点击支付","支付成功"],     marker = {"colors": ["deepskyblue", "lightsalmon", "teal", "silver"],  # 颜色               "line": {"color": ["red", "blue", "wheat", "wheat"],   # 边框颜色和线条宽度                        "width": [0, 1, 3, 5]}},     textfont = {"family": "Old Standard TT, serif", "size": 13,   # 字体竖立                 "color": "black"},      opacity = 0.65))  # 透明度 fig.show() 

多组面积漏斗

分别组别的漏斗图吾们也能够分盛开,将它们放在一个大的画布中:

from plotly import graph_objects as go  fig = go.Figure()  # 增补四组数据:第一季度到第四季度 fig.add_trace(go.Funnelarea(     scalegroup = "first",   # 组又名称     text = ["涉猎网站","搜索","添购","挑交订单","点击支付","支付成功"],     values = [500, 450, 340, 230, 220, 110],  # 数据     textinfo = "value",  # 表现文本新闻     title = {"position": "top center",  # 标题顶部居中              "text": "第一季度"  # 标题内容             },     domain = {"x": [0, 0.5], # 图形位置               "y": [0, 0.5]              }))  fig.add_trace(go.Funnelarea(     scalegroup = "first",      text = ["涉猎网站","搜索","添购","挑交订单","点击支付","支付成功"],     values = [600, 500, 400, 300, 200, 100],      textinfo = "value",     title = {"position": "top center",               "text": "第二季度"},     domain = {"x": [0, 0.5],                "y": [0.55, 1]}))  fig.add_trace(go.Funnelarea(     scalegroup = "second",      text = ["涉猎网站","搜索","添购","挑交订单","点击支付","支付成功"],     values = [510, 480, 440, 330, 220, 100],      textinfo = "value",     title = {"position": "top left",               "text": "第三季度"},     domain = {"x": [0.55, 1],                "y": [0, 0.5]}))  fig.add_trace(go.Funnelarea(     scalegroup = "second",      text = ["涉猎网站","搜索","添购","挑交订单","点击支付","支付成功"],     values = [360, 250, 240, 130, 120, 60],     textinfo = "value",      title = {"position": "top right",               "text": "第四季度"},     domain = {"x": [0.55, 1],                "y": [0.55, 1]}))  fig.update_layout(     margin = {"l": 100, "r": 100},   # 整个图形到旁边边框的距离     shapes = [             {"x0": 0, "x1": 0.5, "y0": 0, "y1": 0.5},   # 增补4组位置             {"x0": 0, "x1": 0.5, "y0": 0.55, "y1": 1},             {"x0": 0.55, "x1": 1, "y0": 0, "y1": 0.5},             {"x0": 0.55, "x1": 1, "y0": 0.55, "y1": 1}     ])  fig.show() 

漏斗图真的很益用,能够不悦目察到数据在分别阶段的转化情况。

【编辑保举】甲状腺穿刺器新闻

近来发现的4个Python命令走可视化库,太酷了! 【坦然说】策略可视化在挂图作战中的实践与思考 微柔开源的可视化神器,上手太酷炫了 用Python获取了微信友人数据,进走可视化分析发现 白话Matplotlib数据可视化

Powered by 宝马娱乐世界第一网站 @2013-2021 RSS地图 HTML地图