Python搭建简单的自动化报表(漏斗模型)
作者:年轻
本文结合真实工作场景从数据采集到数据清洗-模型构建(计算)-数据可视化展示了自动展示的全过程。虽然过程很简单,但是希望大家能够由浅入深,让大家有所收获。
注意。文中所有数据均为虚拟数据
文本
工具和第三方库:MySQL Jupter Notebook;熊猫numpy pyecharts
在开始文章之前,先简单介绍一下业务场景和总体思路:
业务场景:
在在线教育行业,用户转化的关键指标主要是:用户数注册数、用户试用数、用户数。据此,构建漏斗图可以直观地展示连续业务流程节点的转换状态。
总体思路:
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 Librarypyecharts.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()

上面是一个简单的自动化漏斗图。它仅提供想法。其实很多事情是可以做的,比如月复一月,年复一年等等。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。