部分和整体

本文介绍了如何使用Python的openpyxl模块读取Excel数据,并结合pyecharts库创建Bar图表和Funnel漏斗图进行数据展示。通过示例代码展示了读取工作簿、工作表和单元格数据的方法,以及如何计算转化率和绘制轮播图来动态展示不同岗位的招聘转化率。
摘要由CSDN通过智能技术生成

一、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")

三、漏斗图

能够直观展示各环节业务数据的变化情况。每个阶段的数据自上而下减少,有助于快速发现和定位问题所处环节。

  1. 绘制

注意:漏斗图不区分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")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值