Python搭建简单自动化报表(漏斗模型)

2019年10月8日14:36:50 发表评论 66 views

作者:young

本文结合实际工作场景,从数据获取一数据清洗—模型搭建(计算)—数据可视化,展现自动化展示的完整过程,过程虽简单,希望大家可以由简入深,各有所得。

注:文章所有数据均为虚拟数据

正文

工具及第三方库:MySQL Jupter Notebook ;Pandas numpy pyecharts

在文章开始之前,先简要介绍一下业务场景及整体思路:

业务场景:

在线教育行业,用户转化关键指标主要有:用户注册数、用户试听数、用户成单数,由此制作一个漏斗图可以很直观的展示连续业务流程节点转化情况。

整体思路:

Python搭建简单自动化报表(漏斗模型)

一、获取数据

首先从数据库中导出“注册表”“试听表”“成单表”,然后使用Pandas导入等待处理

import pandas as pd
import numpy as np
from datetime import datetime
#导入数据表:“员工表”“注册表”“试听表”“成单表”
employee=pd.read_excel('C:/Users/young/Desktop/自动化report/业务员明细表.xlsx')
register=pd.read_excel(r'C:/Users/young/Desktop/自动化report/注册表.xlsx')
audition=pd.read_excel('C:/Users/young/Desktop/自动化report/试听表.xlsx')
contract=pd.read_excel('C:/Users/young/Desktop/自动化report/成单表.xlsx')
#查看register表是否导入成功
employee.head()
#查看数据量
employee.shape
#其他表也是通过该方式查看
#通过查看,这几张表都已成功导入

二、数据清洗

这里的数据清洗最关键的是,因需要统计特定部门业绩,所以这里需要通过部门员工ID匹配三张业绩表,从而得到只属于特定部门的业绩数据。我们做漏斗统计,只需要计数即可,所以有很多的字段是用不到的,我们可以只选择原表中需要的字段进行匹配即可,这样可以减少内存使用空间,提高处理速度

#选取各个原表中需要的字段
register_1=register['ID','create_time']
auditon_1=audition['ID','time','status']
contract_1=contract['ID','values']

#匹配注册表,因为要匹配特定员工业绩所以这里使用left连接
register_s=pd.merge(employee,register_1,left_on='id',right_on='ID',how='left')
#同样的,试听表及成单表也是同样的处理方式
audition_s=pd.merge(employee,audition_1,left_on='id',right_on='ID',how='left')
contract_s=pd.merge(employee,contract_1,left_on='id',right_on='ID',how='left')

三、数据计算

#总注册数
Tr=register_s['ID'].count()
Tr=Tr.astype(float)#转化数据类型

#总试听数
#满足状态才算是试听,这里起到过滤的作用
ad=audition_s.loc[(audition_s.status.isin(['system','no_system']))]
Ta=ad['ID'].count()
Ta=Ta.astype(float)

#总成单数
Tc=contract_s['ID'].count()
Tc=Tc.astype(float)
Tc

四、数据可视化

把上面计算所得的数据构建一个DataFrame数据结构

report = pd.DataFrame([Tr,Ta,Tc],
                     index = ["总客户数","总试听数",'总成单数']
                    )
report.reset_index().rename(columns={'index':'类目',0:'统计'})#修改列名

#输出:
'''
类目       统计
总客户数   65000 
总试听数   10000
总成单数   5000
'''

制作漏斗图

pyecharts版本已更新至一个全新的版本v1,且向下不兼容,也就是说之前用低版本写的东西全部无效了,所以本文用的是最新版本的pyecharts

附上官方文档:

A Python Echarts Plotting Library​pyecharts.org

from pyecharts import options as opts
from pyecharts.charts import Funnel, Page

m=["总注册数","总试听数",'总签约数']
n=[Tr,Ta,Tc]

funnel=(
        Funnel(init_opts = opts.InitOpts(width="500px",height="400px"))
        .add("类目",[list(z) for z in zip(m,n)])
        .set_global_opts(title_opts=opts.TitleOpts(title="漏斗图"))
        
    )
funnel.render_notebook()
Python搭建简单自动化报表(漏斗模型)
漏斗图

以上就是简单的自动化漏斗图,这里只提供思路,其实还有很多的东西可以做,比如环比、同比等等。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: