一、Excel表格的基本结构
1.工作簿和工作表:一个Excel文档就叫做工作簿(Workbook)。一个工作簿中包含一个或多个工作表
2.单元格:一个工作表由单元格(Cell)组成。Excel的数据存储在单元格中。通过列号(Column)和行号(Row)对单元格进行定位。
二、openpyxl模块
#安装openpyxl
pip install openpyxl
#使用openpyxl模块
import openpyxl
from pyecharts.charts import Bar
#读取文件
#文件路径
path = "/Users/caicai/候选人跟进.xlsx"
#读取文件
wb = openpyxl.load_workbook(path)
#使用工作簿["工作表"]读取岗位序列,赋值给positionSheet
positionSheet = wb["岗位序列"]
def read_excel(row):
#使用工作表[n]读取行数据赋值给content
content = positionSheet[row]
y_list = []
for item in content[1:]:
#使用 .value 获取单元格的值,赋值给num
num = item.value
y_list.append(num)
return(content[0].value,y_list)
for i in range(1,8):
data = read_excel(i)
name = data[0]
num = data[1]
if i == 1:
bar.add_xaxis(xaxis_data=num)
else:
bar.add_yaxis(series_name=name,y_axis=num)
bar.render("/Users/caicai/total.html")
三、漏斗图
能够直观展示各环节业务数据的变化情况。每个阶段的数据自上而下减少,有助于快速发现和定位问题所处环节。
绘制
注意:漏斗图不区分x轴和y轴,需要传入一个二维列表,需要两个参数,例如:content = [["筛选:100%",2785]]。一个是每个环节的数量,用于设置每个环节图的大小;另一个是每个环节的名称(即标签),用于展示环节和百分比。
#使用from...import从pyecharts.charts导入Funnel
from pyecharts.charts import Funnel
from pyecharts import options as opts
# 存储标签的列表label
label = ["展现", "点击", "访问", "咨询", "订单"]
# 存储数量的列表num
num = [1000, 880, 264, 52.8, 5.28]
#定义列表total用于存储所有的信息
total = []
for i in range(0,5):
temp = []
if i == 0:
temp.append(label[i]+"100%")
else:
pass_rate = (num[i]/num[i-1])*100
percent = round(pass_rate,1)
temp.append(label[i]+f"{percent}%")
temp.append(num[i])
total.append(temp)
#使用Funnel()函数创建对象赋值给funnel
funnel = Funnel()
#绘制漏斗图
#参数gap:用于展示漏斗图每条间的间距,>0
funnel.add(series_name="漏斗图",data_pair=total,gap=10)
#隐藏图例
funnel.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
funnel.render("/Users/caicai/funnel.html")
知识点:
①拿到一个数量列表,如何计算每个环节的百分比?
利用for循环配合range()函数遍历列表中的每项n:当元素为第一项时,设置百分比为100%;当元素为其他项时,取n/(n-1),计算结果,使用round()保留小数点后一位。
②图例配置项--隐藏
funnel.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
四、轮播图
可以滚动的文字或图片
#导入Timeline模块
from pyecharts.charts import Timeline
#使用Timeline创建对象赋值给tl
tl = Timeline()
#绘制轮播图
tl.add(chart=要传入的图表,time_point="横轴的时间线上的名称")
绘制多漏斗图
# 使用import导入openpyxl模块
import openpyxl
# 使用from...import从pyecharts.charts
# 导入Timeline模块和Funnel模块
#Timeline 模块的作用是将时间线与各类图表进行组合。
from pyecharts.charts import Timeline, Funnel
from pyecharts import options as opts
# 将文件路径赋值给path
path = "/Users/caicai/候选人跟进.xlsx"
# 使用openpyxl.load_workbook()读取文件,赋值给wb
wb = openpyxl.load_workbook(path)
# 使用中括号读取工作表岗位序列,赋值给positionSheet
positionSheet = wb["岗位序列"]
# 定义函数read_excel()传入参数row(行数)
def read_excel(row):
# 使用 工作表[] 读取第1行的数据赋值给label
label = positionSheet[1]
# 使用 工作表[] 读取第row行的数据赋值给num
num = positionSheet[row]
# 新建列表total
total = []
# 使用for循环和range()遍历1-6
for i in range(1,7):
# 取label中的每项元素,使用.value得到值,赋值给title
title = label[i].value
# 取num中的每项元素,使用.value得到值,赋值给number
number = num[i].value
# 新建列表temp
temp = []
# 使用if判断i等于1时
if i == 1:
# 使用append()将title和100%追击到列表temp
temp.append(title+"100%")
# 其他情况
else:
# 使用(当前项/前一项)*100,赋值给pass_rate
pass_rate = (number/num[i-1].value)*100
# 使用round()保留一位小数,赋值给percent
percent = round(pass_rate, 1)
# 将标签和格式化组成的x%追加到列表temp
temp.append(title+f"{percent}%")
# 使用append()将number追加到列表temp
temp.append(number)
# 使用append()将temp追加到列表total
total.append(temp)
# 使用return返回total
return(num[0].value,total)
#使用Timeline创建对象赋值给tl
tl = Timeline()
# 使用for循环配合range()函数遍历2~7
for i in range(2,8):
# 调用read_excel()函数,将参数i传入,赋值给data
data = read_excel(i)
# 使用Funnel创建对象赋值给funnel
funnel = Funnel()
# 将series_name设为空,data[1]赋值给data_pair,设置gap值为10
# 将参数添加到add()函数中
funnel.add(series_name="", data_pair=data[1], gap=10)
# 使用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="各岗位招聘转化率"))
# 将funnel赋值给chart,以格式化将f"{data[0]}岗位"赋值给time_point
# 使用add()函数依次传入参数
tl.add(chart=funnel, time_point=f"{data[0]}岗位")
# 使用render()生成文件保存到/Users/caicai/position.html
tl.render("/Users/caicai/position.html")