用Python 统计、分析2020年江苏省事业单位招聘岗位 Excel 表格信息

本文使用Python的xlrd模块读取并分析2020年江苏省事业单位招聘岗位Excel数据,涉及数据整理、基础统计、按条件分析及综合评估,包括岗位数量、招聘人数、专业要求等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

前面已经介绍了两个 Python xlrd、xlwt 模块处理 Excel 表格文件的实例,一个是侧重简单的文件读取、写入:给已有Excel表格添加序号、增加新列 ,另一个是侧重多个 Excel 表格文件的信息收集整个:汇总,分析大学校运会报名 Excel 表格

这篇博客将介绍第三个用 Python 处理 Excel 表格的实例,侧重于用 xlrd 模块 读取 Excel 表格数据 ,并 对数据进行统计分析

需求:

在工作中,经常会遇到许多 数据量、信息特别多的 Excel 表格 ,当想要从这些表格中查找数据,或进行数据统计及分析工作时,Excel 表格软件提供的功能可能就有点力不从心了。

如需对【江苏省2020年省属事业单位统一公开招聘岗位表】进行一定的数据统计、分析工作。

表格文件预览:( 表格下载链接

在这里插入图片描述
上面表格大概有600条左右的数据,其实数据量也不太多,当遇到有成千上万条的Excel表格数据时,单用Excel表格提供的功能来统计分析数据,就更显吃力了。

模拟案例:统计、分析2020年江苏省事业单位招聘岗位表格信息

总体需求:

  1. 数据读取:获取表格数据,并对数据进行整理;
  2. 基础统计:A: 总招聘岗位数,总招聘人数,岗位最大、最小招聘人数;B: 岗位招聘人数分布情况:即招聘人数为1、2…的单位个数;C: 招聘对象为社会人员、应届毕业生、不限的各自数量,及所占比例。
  3. 按条件查找分析数据:A:专业为计算机相关专业,招聘对象为应届毕业生的所有招聘信息;B:统计条件下招聘的岗位数,招聘人数,及两者在全部招聘信息中所占比例;C: 统计条件下学历要求情况:中专,大专,本科,硕士,博士 招聘岗位数,招聘人数、占比。
  4. 综合分析:A: 统计各主管部门招聘人数,占总招聘人数比例;B: 分析最大、最小招聘人数的部门是哪个;C: 分析每个主管部门招聘对象为:社会人员、应届毕业生、不限 的人数,及其内部比例。
  5. 保存数据: 将上面分析数据写入新建的Excel 表格,方便阅读。
主要思路及实现代码:
1、读取、整理数据:

获取满足后续分析工作要求的数据,是每项数据分析工作的先决条件,这就依赖以数据读取和整理。

用 xlrd 模块读取文件数据:

import xlrd
import xlwt

work_book = xlrd.open_workbook('sample3.xls')
sheet = work_book.sheet_by_index(1)  # 注意下载的文件有隐藏的一个sheet表单
all_data = sheet._cell_values[3:]  # 按行读取表格数据

打印下数据:

for ds in all_data:
    print(ds)

打印截图:

在这里插入图片描述
从上面的截图可以看到,按行读取时,数据内容并不完整,这是因为表格文件中合并单元格的关系:

在这里插入图片描述
数据整理:

因为单元格合并的关系,读取到的数据并不完整,所以就要对数据进行整理。Python的数据分析模块 pandas 里的 DataFrame 数据结构有一个向上查找填充缺失值的方法,因还未介绍过 pandsa 模块,所以来 写一个函数,模拟向上查找填充缺失值方法,并对数据进行整理:

# 向上查找数据函数
def fill(i,j,data_list):
    up_index = i -1
    for c in range(i):
        if data_list[up_index][j] != '':
            return data_list[up_index][j]
        else:
            up_index -= 1

# 模拟pandas里DataFrame对象中向前填充的功能:
for i,ds in enumerate(all_data):
    for j,d in enumerate(ds):
        if d == '':
            ds[j] = fill(i,j,all_data)

# 打印数据:
for ds in all_data:
    print(ds)

打印截图:

在这里插入图片描述
从上面的截图可以看出数据被补充完整了。

2、数据基础分析:

需求:

  1. 总招聘岗位数,总招聘人数,岗位最大、最小招聘人数;
  2. 岗位招聘人数分布情况:即招聘人数为1、2…的单位个数;
  3. 招聘对象为社会人员、应届毕业生、不限的各自数量,及所占比例。

获取数据并整理后就可以进行数据分析工作了,来一个个的实现上述数据基础分析的需求:

1、总招聘岗位数,总招聘人数,岗位最大、最小招聘人数:

# 招聘岗位数
total_post = len(all_data)
print(total_post)  # 580
# 总招聘人数
total_employs = sum([int(ds[9]) for ds in all_data])
print(total_employs)  # 708
# 最大的招聘人数
max_employ = max([int(ds[9]) for ds in all_data])
print(max_employ) # 10
# 最小招聘人数
min_employ = min([int(ds[9]) for ds in all_data])
print(min_employ)  # 1

上面的代码,计算出:总招聘岗位数为580个,总招聘人数为708个,岗位最多、最少招聘人数分别为:10,1。

整个江苏省事业单位才招聘708个,好像不是特别多的样子…

2、岗位招聘人数分布情况:

# 分析岗位招聘人数分布情况
# 先获取有多少招聘个数种类
number_employ = set([int(ds[9]) for ds in all_data])
print(number_employ)  # {1, 2, 3, 4, 5, 7, 9, 10}
# 获取每个招聘数量的岗位数量
# 建立字典
ne_dict = {
   key:0 for key in number_employ}
print(ne_dict)
# {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 7: 0, 9: 0, 10: 0}

for ds in all_data:
    if ds[9] in ne_dict.keys():
        ne_dict[ds[9]] += 1

print(ne_dict)
# {1: 497, 2: 61, 3: 15
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值