0902 团队销售漏斗
知识点
漏斗图
读取excel
获取所有工作表名称
.sheetnames 属性可以获取文件中所有工作表的名称。示例代码如下:
path = "/Users/ajun/销售漏斗.xlsx"
wb = openpyxl.load_workbook(path)
for item in wb.sheetnames:
print(item)
teamA
teamB
teamC
题目和解题步骤
阿俊是销售团队的leader,临近年底需要用漏斗图展示各组销售漏斗,对比三个团队的销售情况。
销售文档路径: /Users/ajun/销售漏斗.xlsx
三组的名称分别是:teamA、teamB和teamC。
题目要求:
- 学习提示的知识点读取文档中所有的工作表;
- 读取每个工作表的第1行和第2行数据,将数据处理成 [“目标客户100%”, 1000] ,计算百分比时,使用round()保留一位小数;
- 利用处理后的数据绘制漏斗图 ;
- 使用 LegendOpts() 隐藏图例;
- 使用 TitleOpts() 将标题设置为:f"{小组名称}销售漏斗"
- 将三个图表保存到对应路径: f"/Users/ajun/{小组名称}.html"
代码
# 使用from...import从pyecharts.charts导入Funnel
from pyecharts.charts import Funnel
# 使用from...import从pyecharts导入options,简写为opts
from pyecharts import options as opts
# 使用import导入openpyxl模块
import openpyxl
# 将文件路径"/Users/ajun/销售漏斗.xlsx",赋值给path
path = "/Users/ajun/销售漏斗.xlsx"
# 使用openpyxl.load_workbook()读取文件,赋值给wb
wb = openpyxl.load_workbook(path)
# 使用.sheetnames读取文件中所有的工作表
# 读取每个工作表中的第1行标题和第2行数量
# 将数据处理成二维列表[["目标客户100%", 100]]
# 利用for循环创建Funnel对象,生成三个漏斗图
# 冲啊!!
ws = wb.sheetnames
for team in ws:
positionSheet = wb[team]
label = positionSheet[1]
num = positionSheet[2]
total = []
for i in range(1,7):
# 取label中的每项元素,使用.value得到值,赋值给title
title = label[i].value
# 取num中的每项元素,使用.value得到值,赋值给number
number = num[i].value
# 创建空列表temp
temp = []
# TODO 使用if判断i等于1时
if i==1 :
# TODO 使用append()将title和100%追加到列表temp
temp.append(title+"100%")
# TODO 否则
else:
# TODO 使用(当前项/前一项)*100,赋值给pass_rate
pass_rate = (number/num[i-1].value)*100
# TODO 使用round()保留pass_rate的一位小数,赋值给percent
percent = round(pass_rate, 1)
# TODO 使用append()将标签和格式化组成的x%追加到列表temp
temp.append(title+f"{percent}%")
# TODO 使用append()将number追加到列表temp
temp.append(number)
# TODO 使用append()将temp追加到列表total
total.append(temp)
# TODO 使用Funnel()函数创建对象赋值给funnel
funnel = Funnel()
# TODO 将series_name设为 漏斗图
# 将total赋值给data_pair
# 设置gap值为10
# 将参数添加到add()函数中
funnel.add(series_name="",data_pair = total,gap=10)
# TODO 使用LegendOpts(),传入参数is_show=False,赋值给legend_opts
# 使用TitleOpts(),设置标题为"产品岗位招聘情况",赋值给title_opts
# 调用set_global_opts()
funnel.set_global_opts(legend_opts=opts.LegendOpts(is_show=False),
title_opts=opts.TitleOpts(title=f"{team}销售漏斗"))
# TODO 使用render()生成漏斗图,存到路径/Users/caicai/pm.html
funnel.render(f"/Users/ajun/{team}.html")