Code前端首页关于Code前端联系我们

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

terry 2年前 (2023-09-25) 阅读数 48 #后端开发

作者:年轻

本文结合真实工作场景从数据采集到数据清洗-模型构建(计算)-数据可视化展示了自动展示的全过程。虽然过程很简单,但是希望大家能够由浅入深,让大家有所收获。

注意。文中所有数据均为虚拟数据

文本

工具和第三方库:MySQL Jupter Notebook;熊猫numpy pyecharts

在开始文章之前,先简单介绍一下业务场景和总体思路:

业务场景:

在在线教育行业,用户转化的关键指标主要是:用户数注册数、用户试用数、用户数。据此,构建漏斗图可以直观地展示连续业务流程节点的转换状态。

总体思路:Python搭建简单自动化报表(漏斗模型)

1。获取数据

先从数据库导出“注册表”、“监听表”、“单表”,然后使用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
#其他表也是通过该方式查看
#通过查看,这几张表都已成功导入

2。数据清洗

这里数据清洗最关键的是,由于需要读取具体部门的绩效,所以需要通过部门的员工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')

3.数据计算

#总注册数
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

4.数据可视化

根据上面的计算构建一个DataFrame数据结构data

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

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

构建漏斗图

pyechartsi 版本已经更新到全新版本 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搭建简单自动化报表(漏斗模型)漏斗图

上面是一个简单的自动化漏斗图。它仅提供想法。其实很多事情是可以做的,比如月复一月,年复一年等等。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门