Files
jupyter/体测单位/燕山石化.ipynb
T
2023-06-15 19:56:21 +08:00

3220 lines
110 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "3db1006c-8098-40e5-96f4-f16d4332ddc9",
"metadata": {
"jp-MarkdownHeadingCollapsed": true,
"tags": [],
"toc-hr-collapsed": true
},
"source": [
"# 基础信息管理"
]
},
{
"cell_type": "markdown",
"id": "bf152e7d-6a36-4877-98d9-f11e3a73792e",
"metadata": {
"tags": []
},
"source": [
"## 导入人员信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1b92b7c5-cb77-49da-95b7-34827ecf1d16",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"\n",
"wb = openpyxl.load_workbook('data/燕山石化人员情况表.xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"person = {}\n",
"\n",
"for n in range(2, sheet.max_row+1):\n",
" if sheet.cell(n,1).value is not None:\n",
" code = int(sheet.cell(n, 1).value)\n",
" person.setdefault(code, {})\n",
" dict1 = {}\n",
" dict1['name'] = sheet.cell(n, 2).value\n",
" if sheet.cell(n, 7).value ==1:\n",
" sex = '男'\n",
" else:\n",
" sex = '女'\n",
" dict1['sex'] = sheet.cell(n, 3).value\n",
" birth = str(sheet.cell(n, 6).value).split()[0]\n",
" dict1['birth'] = birth\n",
" if sheet.cell(n,5).value is not None:\n",
" dict1['phone'] = sheet.cell(n, 5).value\n",
" if sheet.cell(n,7).value is not None:\n",
" dict1['id_num'] = sheet.cell(n, 7).value\n",
" if sheet.cell(n,8).value is not None:\n",
" dict1['SAP'] = sheet.cell(n, 8).value\n",
" if sheet.cell(n,9).value is not None:\n",
" dict1['工作单位'] = sheet.cell(n, 9).value\n",
" if sheet.cell(n,10).value is not None:\n",
" dict1['车间'] = sheet.cell(n, 10).value\n",
" else:\n",
" dict1['车间'] =''\n",
" if sheet.cell(n,11).value is not None:\n",
" dict1['班组'] = sheet.cell(n, 11).value\n",
" else:\n",
" dict1['班组'] =''\n",
" if sheet.cell(n,12).value is not None:\n",
" dict1['工作性质'] = sheet.cell(n, 11).value\n",
" person[code] = dict1\n",
"#jianyuan = [6484,7110,6441,6541,6543,6549,6555,6600,2958,2981,3033,3231,3249,3287,3228,7741,7749,7794,7799,7806,7837,7863,7870,7880,7894,7895,7904,7936,7947,7953,7958,7968,7969,7974,8086,8114]\n",
"\n",
"print(len(person))\n",
"#for k in jianyuan:\n",
"# if k in person.keys():\n",
"# del person[k]\n",
"print(len(person))\n",
"#bianwai =[449,6839]\n",
"#for i in range(7139,7200):\n",
"# bianwai.append(i)\n",
"#for k in bianwai:\n",
"# if k in person.keys():\n",
"# del person[k]\n",
"print(len(person))\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(person, fl, ensure_ascii=False)\n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "f5c73dff-697d-4ba5-a90c-9bed68eaf4b3",
"metadata": {},
"source": [
"## 每日成绩导入"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "71e1ec6a-6797-4496-969a-1d1461b9ea58",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"import csv\n",
"\n",
"filename = '../item.json'\n",
"item = {}\n",
"unit = {}\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for k,v in dict1.items():\n",
" item[k] = v\n",
"re_ta = {}\n",
"dict1 = {}\n",
"list1 = []\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"\n",
"filename = 'data/places_result_20230517.csv'\n",
"with open(filename,'r',newline='') as csv_file:\n",
" fl = csv.reader(csv_file,delimiter=',')\n",
" header = next(fl) \n",
" for line in fl:\n",
" #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n",
" list1.append(line)\n",
"#print(list1)\n",
"for result in list1:\n",
" user = str(result[2])\n",
" if user in dict1.keys(): \n",
" m_item = str(result[3]) \n",
" re_ta.setdefault(user,{}) \n",
" re_ta[user]['name'] = dict1[user]['name']\n",
" re_ta[user]['sex'] = dict1[user]['sex'] \n",
" re_ta[user]['部门'] = dict1[user]['工作单位']\n",
" item_name = item[m_item]['name']\n",
" re_ta[user].setdefault(item_name,{}) \n",
" score = int(result[4])/item[m_item]['divisor'] \n",
" re_ta[user][item_name]['成绩'] = f'{score} {item[m_item][\"unit\"]}'\n",
"print(len(re_ta))\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
"for k in re_ta.keys():\n",
" if k in dict2.keys():\n",
" print(k,dict2[k]['name'],'已测试!')\n",
"for k, v in re_ta.items():\n",
" if k not in dict2.keys():\n",
" dict2[k] = v\n",
" else:\n",
" for k1,v1 in v.items():\n",
" dict2[k][k1] = v1\n",
"filename = 'data/result_燕山石化(20230517).json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(re_ta, fl, ensure_ascii=False) \n",
"print(len(re_ta))\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict2, fl, ensure_ascii=False) \n",
"print(len(dict2))"
]
},
{
"cell_type": "markdown",
"id": "79147ba8-4b90-40ba-81a9-e6062600c239",
"metadata": {},
"source": [
"## 每日成绩导出"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c24880ad-bbbd-4ad8-a894-cbcea389e822",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"\n",
"items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"title = ['编号','姓名','性别','单位','车间','班组','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"\n",
"filename = 'data/result_燕山石化(20230517).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
" \n",
"list1 = []\n",
"for k, v in dict1.items():\n",
" list2 = []\n",
" list2.append(str(k).rjust(5,'0'))\n",
" list2.append(v['name']) \n",
" list2.append(dict2[k]['sex'])\n",
" list2.append(dict2[k]['工作单位']) \n",
" list2.append(dict2[k]['车间'])\n",
" list2.append(dict2[k]['班组'])\n",
" for item in items:\n",
" if item in v.keys():\n",
" list2.append(v[item]['成绩']) \n",
" elif item =='name':\n",
" list2.append(v[item])\n",
" else:\n",
" list2.append('') \n",
" list1.append(list2)\n",
"filename = 'data/燕山石化体测情况表(20230517).xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename)"
]
},
{
"cell_type": "markdown",
"id": "1cd93a0e-8340-4bd0-a8fd-747f149b256d",
"metadata": {},
"source": [
"## 总成绩导出"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "79c9c728-12e9-4107-bc5a-8c3e3d8b64a6",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"\n",
"items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"title = ['编号','姓名','性别','单位','车间','班组','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"\n",
"filename = 'data/result_燕山石化-all.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
" \n",
"list1 = []\n",
"for k, v in dict1.items():\n",
" list2 = []\n",
" list2.append(str(k).rjust(5,'0'))\n",
" list2.append(v['name']) \n",
" list2.append(dict2[k]['sex'])\n",
" list2.append(dict2[k]['工作单位']) \n",
" list2.append(dict2[k]['车间'])\n",
" list2.append(dict2[k]['班组'])\n",
" for item in items:\n",
" if item in v.keys():\n",
" list2.append(v[item]['成绩']) \n",
" elif item =='name':\n",
" list2.append(v[item])\n",
" else:\n",
" list2.append('') \n",
" list1.append(list2)\n",
"filename = 'data/燕山石化体测情况表.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename)"
]
},
{
"cell_type": "markdown",
"id": "6d431fc1-b743-467c-91b3-9788e245becb",
"metadata": {},
"source": [
"## 统计部门测试人数"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "68454877-f1fe-4eed-8a48-265e428f892e",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"\n",
"filename = 'data/result_燕山石化(20230516).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"dict2 = {}\n",
"for k, v in dict1.items():\n",
" unit = v['部门']\n",
" dict2.setdefault(unit,0)\n",
" dict2[unit] = dict2[unit] + 1\n",
"print(dict2)\n",
"title =['单位','体测人数']\n",
"list1 = [] \n",
"for k, v in dict2.items():\n",
" list2 = []\n",
" list2 = [k,v]\n",
" list1.append(list2)\n",
"filename = 'data/燕山石化部门测试人数情况表(20230516).xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename)"
]
},
{
"cell_type": "markdown",
"id": "8becc0af-d22b-46a2-b35e-9122942515d4",
"metadata": {},
"source": [
"## 每日未测试人员情况表"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7085bf6f-7465-44fb-bddb-38130fbe5618",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"\n",
"\n",
"title = ['编号','姓名','性别','单位','车间','班组']\n",
"filename = 'data/result_燕山石化(20230417).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
"list1 = []\n",
"for k, v in dict2.items():\n",
" list2 = []\n",
" if k not in dict1.keys():\n",
" list2.append(str(k).rjust(5,'0'))\n",
" list2.append(v['name']) \n",
" list2.append(dict2[k]['sex'])\n",
" list2.append(dict2[k]['工作单位']) \n",
" list2.append(dict2[k]['车间'])\n",
" list2.append(dict2[k]['班组'])\n",
" list1.append(list2)\n",
"filename = 'data/燕山石化未体测人员名单(20230417).xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename) "
]
},
{
"cell_type": "markdown",
"id": "3231f52d-776f-4d29-b6f5-c28f6a0c30a9",
"metadata": {},
"source": [
"## 汇总未测试人员情况表"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "eddf7dab-b28d-402a-aeaf-27c120048ecb",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"\n",
"\n",
"title = ['编号','姓名','性别','单位','车间','班组']\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"# 筛选重名剔除名单\n",
"chongming = []\n",
"filename = 'data/燕山石化重名人员测试情况(20230515).xlsx'\n",
"wb = openpyxl.load_workbook(filename)\n",
"sheet = wb.active\n",
"for n in range(1, sheet.max_row+1,2):\n",
" if sheet.cell(n,1).value is not None:\n",
" code1 = int(sheet.cell(n, 1).value)\n",
" code2 = int(sheet.cell(n+1, 1).value)\n",
" bz1 = sheet.cell(n, 4).value\n",
" bz2 = sheet.cell(n+1, 4).value\n",
" if bz1 =='否' and bz2 =='否':\n",
" chongming.append(max(code1,code2))\n",
" else:\n",
" chongming.append(code1)\n",
" chongming.append(code2)\n",
"\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
"list1 = []\n",
"for k, v in dict2.items():\n",
" list2 = []\n",
" if k not in dict1.keys() and int(k) not in chongming:\n",
" list2.append(str(k).rjust(5,'0'))\n",
" list2.append(v['name']) \n",
" list2.append(dict2[k]['sex'])\n",
" list2.append(dict2[k]['工作单位']) \n",
" list2.append(dict2[k]['车间'])\n",
" list2.append(dict2[k]['班组'])\n",
" list1.append(list2)\n",
"filename = 'data/燕山石化未体测人员名单(截至20230516).xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
"wb.save(filename)"
]
},
{
"cell_type": "markdown",
"id": "4dd9b2b7-bd3d-4d5b-ac84-3a49bcada8b5",
"metadata": {},
"source": [
"## 统计测试项目不足人员"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "641863ef-324f-4c33-a0a9-699031afb6f1",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"\n",
"items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"title = ['编号','姓名','性别','单位','车间','班组','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
"dict3 = {}\n",
"for k, v in dict1.items():\n",
" list1 = []\n",
" for item in v.keys():\n",
" if item in items:\n",
" list1.append(item)\n",
" dict3[k] = list1\n",
"list1 = []\n",
"for k, v in dict3.items():\n",
" if len(v)<4 and '身高' in v and '体重' in v or ((len(v)<3 and '身高' not in v and '体重' not in v)):\n",
" list2 = []\n",
" xm = ','.join(v)\n",
" list2.append(k)\n",
" list2.append(dict2[k]['name'])\n",
" list2.append(dict2[k]['工作单位'])\n",
" list2.append(xm)\n",
" list1.append(list2)\n",
"print(list1)\n",
"filename = 'data/燕山石化测试项目不足人员.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"#sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename) \n"
]
},
{
"cell_type": "markdown",
"id": "d3a69840-29fc-434d-af47-ad864f9e511c",
"metadata": {},
"source": [
"## 汇总成绩导入"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b735248a-c1b0-4e90-8df4-37cd7625cb1a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"import csv\n",
"\n",
"filename = '../item.json'\n",
"item = {}\n",
"unit = {}\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for k,v in dict1.items():\n",
" item[k] = v\n",
"re_ta = {}\n",
"dict1 = {}\n",
"list1 = []\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"\n",
"filename = 'data/places_result_20230526.csv'\n",
"with open(filename,'r',newline='') as csv_file:\n",
" fl = csv.reader(csv_file,delimiter=',')\n",
" header = next(fl) \n",
" for line in fl:\n",
" #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n",
" list1.append(line)\n",
"#print(list1)\n",
"for result in list1:\n",
" user = str(result[2])\n",
" if user in dict1.keys(): \n",
" m_item = str(result[3]) \n",
" re_ta.setdefault(user,{}) \n",
" re_ta[user]['name'] = dict1[user]['name']\n",
" re_ta[user]['sex'] = dict1[user]['sex'] \n",
" re_ta[user]['部门'] = dict1[user]['工作单位']\n",
" item_name = item[m_item]['name']\n",
" re_ta[user].setdefault(item_name,{}) \n",
" score = int(result[4])/item[m_item]['divisor'] \n",
" re_ta[user][item_name]['成绩'] = f'{score} {item[m_item][\"unit\"]}'\n",
"print(len(re_ta))\n",
"\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(re_ta, fl, ensure_ascii=False) \n",
"print(len(re_ta))"
]
},
{
"cell_type": "markdown",
"id": "fbdf2c54-7303-43ad-bbec-0fbcd033603a",
"metadata": {},
"source": [
"## 统计测试人数"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6d10738f-8da8-4f18-970b-e67433a06661",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"import csv\n",
"\n",
"person = set()\n",
"filename = 'data/places_result_20230526.csv'\n",
"with open(filename,'r',newline='') as csv_file:\n",
" fl = csv.reader(csv_file,delimiter=',')\n",
" header = next(fl) \n",
" for line in fl:\n",
" #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n",
" list1.append(line)\n",
"#print(list1)\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"\n",
"for result in list1:\n",
" user = str(result[2])\n",
" if user in dict1.keys():\n",
" person.add(user)\n",
"\n",
"print(len(person))"
]
},
{
"cell_type": "markdown",
"id": "5bdcad97-309f-4d29-82c4-b53c68b9ee22",
"metadata": {},
"source": [
"## 统计重复人员信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0dd5da15-92e0-45c2-b9e9-11417210974e",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"import csv\n",
"\n",
"\n",
"list1 = []\n",
"list2 = set()\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"filename = 'data/result_燕山石化-all.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl) \n",
"\n",
"for k,v in dict1.items():\n",
" name = v['name']\n",
" if name in list1:\n",
" list2.add(name)\n",
" list1.append(name)\n",
"list3 = []\n",
"for item in list2:\n",
" for k,v in dict1.items():\n",
" if v['name'] == item:\n",
" list3.append([k,v['name'],v['sex'],v['birth']])\n",
"filename = 'data/燕山石化重名人员名单.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"#sheet.append(title)\n",
"for row in list3:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename) "
]
},
{
"cell_type": "markdown",
"id": "96375506-0cca-4a9b-b0da-162460d25e51",
"metadata": {},
"source": [
"## 重复人员测试情况"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5df8eb8f-3594-40be-a491-b4d750bbd554",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"import csv\n",
"\n",
"\n",
"list1 = []\n",
"list2 = set()\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl) \n",
"\n",
"\n",
"list3 = []\n",
"\n",
"filename = 'data/燕山石化重名人员名单.xlsx'\n",
"wb = openpyxl.load_workbook(filename)\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"\n",
"\n",
"for n in range(1, sheet.max_row+1):\n",
" if sheet.cell(n,1).value is not None:\n",
" code = int(sheet.cell(n, 1).value)\n",
" name = dict1[str(code)]['name']\n",
" unit = dict1[str(code)]['工作单位']\n",
" if str(code) in dict2.keys():\n",
" ce = '是'\n",
" else:\n",
" ce = '否'\n",
" list3.append([code,name,unit,ce])\n",
"filename = 'data/燕山石化重名人员测试情况(20230516).xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"#sheet.append(title)\n",
"for row in list3:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename) "
]
},
{
"cell_type": "markdown",
"id": "0513a787-f2e2-4ee6-9c67-c94c50e62393",
"metadata": {},
"source": [
"## 统计部门测试情况"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "48a0b2b8-c069-4d2d-9813-d65474749000",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict3 = json.load(fl)\n",
"dict2 = {}\n",
"for k, v in dict1.items():\n",
" unit = v['工作单位']\n",
" dict2.setdefault(unit,0)\n",
" dict2[unit] = dict2[unit] + 1\n",
"dict4 = {}\n",
"for k, v in dict3.items():\n",
" unit = v['部门']\n",
" dict4.setdefault(unit,0)\n",
" dict4[unit] = dict4[unit] + 1\n",
"list1 = []\n",
"for k, v in dict2.items():\n",
" list2 = []\n",
" list2.append(k)\n",
" list2.append(v)\n",
" if k in dict4.keys():\n",
" list2.append(dict4[k])\n",
" else:\n",
" list2.append(0)\n",
" list1.append(list2)\n",
"print(list1)\n",
"filename = 'data/燕山石化部门测试情况(截止5月6日).xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"#sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename) \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c294db76-adc4-41bf-9ee6-811dde1905e8",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"#C2EDC1A2D1C7\n",
"gbs = 'C2EDC1A2D1C7'\n",
"import binascii\n",
"bs = binascii.a2b_hex(gbs)\n",
"print('bs', bs)\n",
"print('decode-bs:', bs.decode('gb2312'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9924d06a-8753-4856-9ccc-f3d5f8956bb2",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"s = '马立亚'\n",
"gbcode = s.encode('gb2312') # 先转成 bytes格式\n",
"print('gbcode:', gbcode)\n",
"gbs = \"\".join([hex(ch)[2:] for ch in gbcode]) #\n",
"print('gbs:', gbs)"
]
},
{
"cell_type": "markdown",
"id": "a7a00f31-9bf8-4fcd-9c6b-23707c4a5e00",
"metadata": {},
"source": [
"## 报告按部门分类更名"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7e495c73-5116-4a3f-a8e1-65f7cc6ec28e",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import os,sys,shutil\n",
"import json\n",
"import math\n",
"import glob\n",
"from pathlib import Path\n",
"\n",
"fi_path = 'file/20230530'\n",
"old = []\n",
"dict2 = {}\n",
"\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"for k, v in dict1.items():\n",
" m_name = v['name']\n",
" m_depart = v['unit'] \n",
" dict2[int(k)] = [m_name,m_depart]\n",
"\n",
"fls = glob.glob(f'{fi_path}/*.pdf')\n",
"\n",
"for fn in fls:\n",
" old.append(os.path.basename(fn).split('.')[0])\n",
"\n",
"for n in old: \n",
" o_name = f'{fi_path}/{n}.pdf'\n",
" new_path = Path(fi_path,'new',dict1[n]['unit'])\n",
" new_path.mkdir(parents = True, exist_ok = True)\n",
" n_name = Path(new_path,f'{str(n).rjust(5,\"0\")}-{dict2[int(n)][0]}.pdf')\n",
" if not os.path.exists(n_name):\n",
" shutil.copyfile(o_name,n_name)\n",
" print(n_name)\n",
" \n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "377fc3ce-42c6-4710-a820-392e8d536463",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-08T12:40:32.030220Z",
"iopub.status.busy": "2023-06-08T12:40:32.029391Z",
"iopub.status.idle": "2023-06-08T12:40:32.039592Z",
"shell.execute_reply": "2023-06-08T12:40:32.037309Z",
"shell.execute_reply.started": "2023-06-08T12:40:32.030146Z"
}
},
"source": [
"## 生成电子文件明细表"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "6865596a-6524-483f-a984-b773f8d2cab0",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-08T12:41:21.045391Z",
"iopub.status.busy": "2023-06-08T12:41:21.044573Z",
"iopub.status.idle": "2023-06-08T12:41:21.701415Z",
"shell.execute_reply": "2023-06-08T12:41:21.700659Z",
"shell.execute_reply.started": "2023-06-08T12:41:21.045318Z"
}
},
"outputs": [],
"source": [
"import os,sys,shutil\n",
"import json\n",
"import openpyxl\n",
"import glob\n",
"from pathlib import Path\n",
"\n",
"fi_path = 'file/20230530'\n",
"old = []\n",
"dict2 = {}\n",
"list1 = []\n",
"\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"for k, v in dict1.items(): \n",
" m_name = v['name']\n",
" m_depart = v['unit'] \n",
" dict2[int(k)] = [m_name,m_depart]\n",
" list1.append([k.rjust(5,\"0\"),m_depart,m_name])\n",
"filename = 'data/燕山石化体测报告明细表.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"\n",
"for row in list1:\n",
" sheet.append(row)\n",
"wb.save(filename)"
]
},
{
"cell_type": "markdown",
"id": "ce1487ed-2b11-4a3c-a305-5499af4526d1",
"metadata": {},
"source": [
"# 数据分析"
]
},
{
"cell_type": "markdown",
"id": "ba35cf0a-9d0f-48d4-8aac-27333b42804f",
"metadata": {
"tags": [],
"toc-hr-collapsed": true
},
"source": [
"## 单位综合数据分析"
]
},
{
"cell_type": "markdown",
"id": "08500016-4f33-446c-bc44-28e0a22a591a",
"metadata": {},
"source": [
"### 获取清理后数据"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "aab3ed2b-54f1-42de-8e83-cc559827a4b5",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"import csv\n",
"\n",
"filename = '../item.json'\n",
"item = {}\n",
"unit = {}\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for k,v in dict1.items():\n",
" item[k] = v\n",
"filename = 'data/燕山石化人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"re_ta = {}\n",
"list1 = []\n",
"#print(\"\\n运动项目信息:\")\n",
"filename = 'data/places_result_20230527.csv'\n",
"with open(filename,'r',newline='') as csv_file:\n",
" fl = csv.reader(csv_file,delimiter=',')\n",
" header = next(fl) \n",
" for line in fl:\n",
" #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n",
" list1.append(line)\n",
"#print(list1)\n",
"for result in list1:\n",
" user = str(result[2])\n",
" if user in dict1.keys(): \n",
" m_item = str(result[3]) \n",
" re_ta.setdefault(user,{}) \n",
" re_ta[user]['name'] = dict1[user]['name']\n",
" re_ta[user]['unit'] = dict1[user]['工作单位']\n",
" re_ta[user]['sex'] = dict1[user]['sex']\n",
" re_ta[user]['birth'] = dict1[user]['birth'].replace('-','/')\n",
" item_name = item[m_item]['name']\n",
" re_ta[user].setdefault(item_name,{}) \n",
" score = int(result[4])/item[m_item]['divisor'] \n",
" re_ta[user][item_name]['成绩'] = f'{score} {item[m_item][\"unit\"]}'\n",
" re_ta[user][item_name]['得分'] =result[5]\n",
"filename = 'data/result_燕山石化1.json'\n",
"print(len(re_ta))\n",
"liwai = []\n",
"for k, v in re_ta.items():\n",
" if (len(v)<8 and '身高' in v and '体重' in v) or (len(v)<7 and '身高' not in v and '体重' not in v) :\n",
" liwai.append(k)\n",
"print(liwai)\n",
"for k in liwai:\n",
" del re_ta[k]\n",
"print(len(re_ta))\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(re_ta, fl) \n",
"print('ok')\n",
"print(len(re_ta))"
]
},
{
"cell_type": "markdown",
"id": "a3ce7905-c849-48dc-996c-2eeee59e75aa",
"metadata": {},
"source": [
"### 计算人员年龄"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9851d728-8c85-48fd-b7d6-d0104318e89d",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import datetime\n",
"\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"for k, v in dict1.items(): \n",
" birth = v['birth'].split()[0].split('/') \n",
" nian = int(birth[0].strip())\n",
" yue = int(birth[1].strip())\n",
" ri = int(birth[2].strip())\n",
" #print(k,nian,yue,ri)\n",
" days = (datetime.date(2023, 5, 18)-datetime.date(nian,yue,ri)).days\n",
" v['age'] = round(days/365)\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl) \n",
"print('ok') "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e0f26f0a-6374-4903-a6c9-99cf25e5db2a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"list1 = []\n",
"for k,v in dict1.items():\n",
" if v['age'] < 19:\n",
" print(k,v['name'],v['age'] )\n"
]
},
{
"cell_type": "markdown",
"id": "34ae5549-b31c-481e-986a-e1ad8bb1ccc5",
"metadata": {},
"source": [
"### 汇总人员信息及成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d171e87d-9709-4de8-8261-e1eb4343e002",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"\n",
"items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for k,v in dict1.items():\n",
" score = 0\n",
" i = 0 \n",
" for k1,v1 in v.items(): \n",
" if k1 in items:\n",
" score = score + int(v1['得分'])\n",
" i+=1\n",
" dict1[k]['score'] = round(score/i,2) \n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl) \n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "8ccea925-2396-4dd9-8cc7-731f11aa3529",
"metadata": {},
"source": [
"### 计算测试等级"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "864da63f-bc6a-4246-81ec-e626680cf300",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"dict2['不合格'] = [0,255]\n",
"dict2['合格'] = [256,332]\n",
"dict2['良好'] = [333,367]\n",
"dict2['优秀'] = [368,500]\n",
"\n",
"for k1, v1 in dict2.items():\n",
" di = v1[0]\n",
" gao = v1[1]\n",
" i = 0 \n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if int(v['score']*100) in range(di,gao+1):\n",
" dict1[k]['level'] = k1\n",
" i+=1\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" else:\n",
" f = f+1\n",
" print(f'{di}~{gao}分人数:{i}人,男性:{m}人,女性:{f}人')\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl) \n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "c58f8632-7588-4f4d-8117-91f1a7b11688",
"metadata": {},
"source": [
"### 根据年龄汇总人员信息及成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b605b817-da5f-407f-916b-ce4750727335",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,69]]\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" i = 1\n",
" score = 0\n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['age'] in range(di,gao+1):\n",
" score = score+v['score']\n",
" i+=1\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" \n",
" print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i-1}人,男性:{m}人')"
]
},
{
"cell_type": "markdown",
"id": "1ea7f10f-7c80-4888-a00e-69dbaeceb100",
"metadata": {},
"source": [
"#### 根据年龄汇总人员信息及成绩(男)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "96506507-439f-42b5-93f7-bcba8930dae9",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" i = 1\n",
" score = 0\n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['age'] in range(di,gao+1) and v['sex'] == '男':\n",
" score = score+v['score']\n",
" i+=1\n",
" \n",
" \n",
" print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i-1}人')"
]
},
{
"cell_type": "markdown",
"id": "bd906618-8b50-450d-bb32-a2554da91b9a",
"metadata": {},
"source": [
"#### 根据年龄汇总人员信息及成绩(女)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "10cc353b-32cb-45eb-9362-da22b170c301",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" i = 1\n",
" score = 0\n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['age'] in range(di,gao+1) and v['sex'] == '女':\n",
" score = score+v['score']\n",
" i+=1\n",
" \n",
" \n",
" print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i-1}人')"
]
},
{
"cell_type": "markdown",
"id": "f0c57ed7-4ab6-4415-aac4-f55ca117743e",
"metadata": {},
"source": [
"### 计算平均成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "532b4d97-df50-4fd9-9e85-1181afcd366e",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n",
"#filename = 'data/result_石家庄.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"i = 1\n",
"m = 0\n",
"f = 0\n",
"score = 0\n",
"t_score = 0\n",
"for k,v in dict1.items():\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" score = score+v['score']\n",
"print(f'平均成绩:{round(score/m,4)}分,男性:{m}人')\n",
"t_score = t_score + score\n",
"score = 0\n",
"for k,v in dict1.items():\n",
" if v['sex'] == '女':\n",
" f = f +1\n",
" score = score+v['score']\n",
"print(f'平均成绩:{round(score/f,4)}分,女性:{f}人')\n",
"t_score = t_score + score\n",
"print(f'平均成绩:{round(t_score/7727,4)}分,总体:7727人')"
]
},
{
"cell_type": "markdown",
"id": "b18769df-ccfb-4013-82ea-51e6a3e24565",
"metadata": {},
"source": [
"### 计算测试等级"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4377cf1d-83f0-4e6b-819f-f274915886b9",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"dict2['不合格'] = [0,255]\n",
"dict2['合格'] = [256,332]\n",
"dict2['良好'] = [333,367]\n",
"dict2['优秀'] = [368,500]\n",
"\n",
"for k1, v1 in dict2.items():\n",
" di = v1[0]\n",
" gao = v1[1]\n",
" i = 0 \n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if int(v['score']*100) in range(di,gao+1):\n",
" dict1[k]['level'] = k1\n",
" i+=1\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" else:\n",
" f = f+1\n",
" print(f'{di}~{gao}分人数:{i}人,男性:{m}人,女性:{f}人')\n",
"#filename = 'data/result_石家庄.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl) \n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "ee6b0500-bf94-458f-8d1c-0e75e8dcc1f5",
"metadata": {},
"source": [
"### 计算各年龄段测试等级(女)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4fafdc11-c93b-4a8d-854e-61748713d0f8",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"dict2['不合格'] = [0,255]\n",
"dict2['合格'] = [256,332]\n",
"dict2['良好'] = [333,367]\n",
"dict2['优秀'] = [368,500]\n",
"dict3 = {}\n",
"for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" age = f'{di}-{gao}'\n",
" dict3.setdefault(age,{})\n",
" i = 0 \n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['age'] in range(di,gao+1): \n",
" dict3[age].setdefault(v['level'],0)\n",
" if v['sex'] == '女':\n",
" dict3[age][v['level']] = dict3[age][v['level']]+1\n",
" \n",
"for k, v in dict3.items():\n",
" print(k,v)"
]
},
{
"cell_type": "markdown",
"id": "bebb0307-62e7-458c-a78a-90c593595a67",
"metadata": {},
"source": [
"### 计算各年龄段测试等级(男)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cae4d5b6-20ef-4a24-91ea-59ddc691349a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"dict2['不合格'] = [0,255]\n",
"dict2['合格'] = [256,332]\n",
"dict2['良好'] = [333,367]\n",
"dict2['优秀'] = [368,500]\n",
"dict3 = {}\n",
"for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" age = f'{di}-{gao}'\n",
" dict3.setdefault(age,{})\n",
" i = 0 \n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['age'] in range(di,gao+1): \n",
" dict3[age].setdefault(v['level'],0)\n",
" if v['sex'] == '男':\n",
" dict3[age][v['level']] = dict3[age][v['level']]+1\n",
" \n",
"for k, v in dict3.items():\n",
" print(k,v)"
]
},
{
"cell_type": "markdown",
"id": "f7ce0701-4f39-46fd-b284-2274abf7d329",
"metadata": {},
"source": [
"### 按照部门计算平均成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9d5660b9-2046-4319-b2c2-29ba5ddf818f",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"depart = []\n",
"for k, v in dict1.items():\n",
" if v['unit'] not in depart:\n",
" depart.append(v['unit'])\n",
"\n",
"for item in depart:\n",
" score = 0\n",
" n = 0\n",
" for k, v in dict1.items():\n",
" if item == v['unit']:\n",
" score = score + v['score']\n",
" n = n +1 \n",
" print(item,round(score/n,2),n)\n",
" "
]
},
{
"cell_type": "markdown",
"id": "d9122bbd-5767-4fe5-9bb2-c4d73a27a433",
"metadata": {},
"source": [
"### 计算各项目成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "38d9f91d-18de-4df1-8179-03579008c2d0",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"for item in items:\n",
" score = 0\n",
" n = 0\n",
" for k, v in dict1.items():\n",
" if item in v.keys():\n",
" n = n + 1\n",
" score =score + int(v[item]['得分'])\n",
" print(item,round(score/n,2),n)"
]
},
{
"cell_type": "markdown",
"id": "bce1d676-d5f5-47b0-8a51-a1bb74a66674",
"metadata": {},
"source": [
"### 生成倒班人员信息表"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0bf8400c-060e-420e-ba66-04fb67bfc09a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"\n",
"wb = openpyxl.load_workbook('data/燕山石化人员情况表.xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"daoban = {}\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"\n",
"for n in range(2, sheet.max_row+1):\n",
" if sheet.cell(n,1).value is not None:\n",
" code = int(sheet.cell(n, 1).value)\n",
" if sheet.cell(n, 12).value == '倒班' and str(code) in dict1.keys():\n",
" daoban[str(code)] = dict1[str(code)]\n",
"\n",
"filename = 'data/daoban_燕山石化.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(daoban, fl, ensure_ascii=False) \n",
"print(len(daoban)) "
]
},
{
"cell_type": "markdown",
"id": "8b6e02ac-0ce7-4cd3-8da9-025d93a24a53",
"metadata": {},
"source": [
"### 倒班人员构成"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "daa09874-e7a1-4aaa-b648-023e8358adfb",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"dict2['不合格'] = [0,255]\n",
"dict2['合格'] = [256,332]\n",
"dict2['良好'] = [333,367]\n",
"dict2['优秀'] = [368,500]\n",
"\n",
"for k1, v1 in dict2.items():\n",
" di = v1[0]\n",
" gao = v1[1]\n",
" i = 0 \n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if int(v['score']*100) in range(di,gao+1):\n",
" dict1[k]['level'] = k1\n",
" i+=1\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" else:\n",
" f = f+1\n",
" print(f'{di}~{gao}分人数:{i}人,男性:{m}人,女性:{f}人')\n",
"filename = 'data/daoban_燕山石化.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl) \n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "8ad58c29-eb07-48d9-8d62-c5af158c02bf",
"metadata": {},
"source": [
"### 倒班人员年龄段成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "43d4e63d-a615-4ac0-b075-c938dc346e98",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" i = 1\n",
" score = 0\n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['age'] in range(di,gao+1) and v['sex'] == '男':\n",
" score = score+v['score']\n",
" i+=1\n",
" \n",
" \n",
" print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i-1}人')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "69d07666-1a7d-42a0-85df-e88f956b9444",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" i = 1\n",
" score = 0\n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['age'] in range(di,gao+1) and v['sex'] == '女':\n",
" score = score+v['score']\n",
" i+=1\n",
" \n",
" \n",
" print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i-1}人')"
]
},
{
"cell_type": "markdown",
"id": "aca6bfe1-b0c3-41b5-a0be-a5c1af071cbf",
"metadata": {},
"source": [
"### 倒班人员测试等级"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "798112d0-63e6-4a4b-9959-dbadf3c4ed54",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"dict2['不合格'] = [0,255]\n",
"dict2['合格'] = [256,332]\n",
"dict2['良好'] = [333,367]\n",
"dict2['优秀'] = [368,500]\n",
"\n",
"for k1, v1 in dict2.items():\n",
" di = v1[0]\n",
" gao = v1[1]\n",
" i = 0 \n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if int(v['score']*100) in range(di,gao+1):\n",
" dict1[k]['level'] = k1\n",
" i+=1\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" else:\n",
" f = f+1\n",
" print(f'{di}~{gao}分人数:{i}人,男性:{m}人,女性:{f}人')\n",
"#filename = 'data/result_石家庄.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl) \n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "5afed106-e77b-453b-bcdf-29c00665a4bd",
"metadata": {
"execution": {
"iopub.execute_input": "2023-05-27T13:57:01.082474Z",
"iopub.status.busy": "2023-05-27T13:57:01.082047Z",
"iopub.status.idle": "2023-05-27T13:57:01.086797Z",
"shell.execute_reply": "2023-05-27T13:57:01.085545Z",
"shell.execute_reply.started": "2023-05-27T13:57:01.082445Z"
},
"tags": []
},
"source": [
"### 倒班人员平均成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e9444e38-450c-4e70-a98e-aa312d83d9c4",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n",
"#filename = 'data/result_石家庄.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"i = 1\n",
"m = 0\n",
"f = 0\n",
"score = 0\n",
"t_score = 0\n",
"for k,v in dict1.items():\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" score = score+v['score']\n",
"print(f'平均成绩:{round(score/m,4)}分,男性:{m}人')\n",
"t_score = t_score + score\n",
"score = 0\n",
"for k,v in dict1.items():\n",
" if v['sex'] == '女':\n",
" f = f +1\n",
" score = score+v['score']\n",
"print(f'平均成绩:{round(score/f,4)}分,女性:{f}人')\n",
"t_score = t_score + score\n",
"print(f'平均成绩:{round(t_score/(m+f),4)}分,总体:{m+f}人')"
]
},
{
"cell_type": "markdown",
"id": "8e52fd0b-c4db-4b88-b88e-7edf37714b6e",
"metadata": {},
"source": [
"### 计算倒班员工各项目成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3248d9c5-bea2-492c-9a7a-ac2c9632b514",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"for item in items:\n",
" score = 0\n",
" n = 0\n",
" for k, v in dict1.items():\n",
" if item in v.keys():\n",
" n = n + 1\n",
" score =score + int(v[item]['得分'])\n",
" print(item,round(score/n,2),n)"
]
},
{
"cell_type": "markdown",
"id": "ef2b3e2f-896e-4489-9bfd-ae908d7c370a",
"metadata": {},
"source": [
"## 部门数据分析"
]
},
{
"cell_type": "markdown",
"id": "7ebb7f45-3702-45a8-8d04-cb7001711333",
"metadata": {},
"source": [
"### 部门基础信息"
]
},
{
"cell_type": "code",
"execution_count": 137,
"id": "dd023fd7-f780-42b1-9962-4c81dd590344",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-12T23:26:05.926330Z",
"iopub.status.busy": "2023-06-12T23:26:05.925519Z",
"iopub.status.idle": "2023-06-12T23:26:06.063182Z",
"shell.execute_reply": "2023-06-12T23:26:06.062459Z",
"shell.execute_reply.started": "2023-06-12T23:26:05.926289Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['热电厂工会', '炼油厂工会', '有机化工厂工会', '储运厂工会', '合成橡胶厂工会', '检验计量中心工会', '烯烃厂工会', '化学品厂工会', '合成树脂厂', '生产运行保障中心', '高科公司工会', '机关工会', '行政事务中心(离退中心)工会', '教育培训中心工会', '物装中心工会', '消防中心工会']\n"
]
}
],
"source": [
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"depart = []\n",
"for k, v in dict1.items():\n",
" if v['unit'] not in depart:\n",
" depart.append(v['unit'])\n",
"print(depart)"
]
},
{
"cell_type": "markdown",
"id": "404f85c6-b7a4-4b69-8db6-991b148e5ea7",
"metadata": {},
"source": [
"### 人员总体数据分析"
]
},
{
"cell_type": "code",
"execution_count": 149,
"id": "ab2005ae-d7a5-4a1a-bbce-307e9257e985",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-12T23:52:28.078649Z",
"iopub.status.busy": "2023-06-12T23:52:28.077761Z",
"iopub.status.idle": "2023-06-12T23:52:28.153459Z",
"shell.execute_reply": "2023-06-12T23:52:28.152391Z",
"shell.execute_reply.started": "2023-06-12T23:52:28.078608Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"热电厂工会 681 564 117\n",
"炼油厂工会 1006 755 251\n",
"有机化工厂工会 446 346 100\n",
"储运厂工会 983 807 176\n",
"合成橡胶厂工会 713 543 170\n",
"检验计量中心工会 632 311 321\n",
"烯烃厂工会 410 313 97\n",
"化学品厂工会 368 296 72\n",
"合成树脂厂 443 355 88\n",
"生产运行保障中心 371 323 48\n",
"高科公司工会 304 170 134\n",
"机关工会 378 205 173\n",
"行政事务中心(离退中心)工会 524 291 233\n",
"教育培训中心工会 72 36 36\n",
"物装中心工会 182 108 74\n",
"消防中心工会 214 203 11\n",
"7727\n"
]
}
],
"source": [
"hj = 0\n",
"for bumen in depart: \n",
" #bumen = '热电厂工会'\n",
" renshu = 0\n",
" male = 0\n",
" female = 0\n",
" for k,v in dict1.items():\n",
" if v['unit'] == bumen:\n",
" renshu = renshu+1\n",
" if v['sex'] == '男':\n",
" male = male+1\n",
" else:\n",
" female = female +1\n",
" print(bumen,renshu,male,female)\n",
" hj = hj+ renshu\n",
"print(hj)"
]
},
{
"cell_type": "markdown",
"id": "65c8e51d-501b-4940-a2db-9b3fd13a4cae",
"metadata": {},
"source": [
"### 部门年龄构成"
]
},
{
"cell_type": "code",
"execution_count": 223,
"id": "0aaf69f5-77a8-4a39-ae18-d85f4a908a76",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-13T21:50:11.812167Z",
"iopub.status.busy": "2023-06-13T21:50:11.811360Z",
"iopub.status.idle": "2023-06-13T21:50:12.218120Z",
"shell.execute_reply": "2023-06-13T21:50:12.217386Z",
"shell.execute_reply.started": "2023-06-13T21:50:11.812127Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"热电厂工会 年龄构成情况:\n",
"20~24岁平均成绩:2.31分,人数:37人,其中男性:29人\n",
"25~29岁平均成绩:2.62分,人数:20人,其中男性:14人\n",
"30~34岁平均成绩:2.42分,人数:14人,其中男性:11人\n",
"35~39岁平均成绩:2.53分,人数:36人,其中男性:24人\n",
"40~44岁平均成绩:2.55分,人数:113人,其中男性:78人\n",
"45~49岁平均成绩:2.31分,人数:162人,其中男性:125人\n",
"50~54岁平均成绩:2.4分,人数:180人,其中男性:166人\n",
"55~69岁平均成绩:2.4分,人数:119人,其中男性:117人\n",
"\n",
"\n",
"炼油厂工会 年龄构成情况:\n",
"20~24岁平均成绩:2.4分,人数:70人,其中男性:51人\n",
"25~29岁平均成绩:2.66分,人数:52人,其中男性:31人\n",
"30~34岁平均成绩:2.66分,人数:55人,其中男性:39人\n",
"35~39岁平均成绩:2.55分,人数:81人,其中男性:49人\n",
"40~44岁平均成绩:2.44分,人数:262人,其中男性:187人\n",
"45~49岁平均成绩:2.51分,人数:254人,其中男性:174人\n",
"50~54岁平均成绩:2.44分,人数:148人,其中男性:140人\n",
"55~69岁平均成绩:2.31分,人数:84人,其中男性:84人\n",
"\n",
"\n",
"有机化工厂工会 年龄构成情况:\n",
"20~24岁平均成绩:2.3分,人数:36人,其中男性:29人\n",
"25~29岁平均成绩:2.55分,人数:23人,其中男性:12人\n",
"30~34岁平均成绩:2.74分,人数:12人,其中男性:7人\n",
"35~39岁平均成绩:2.58分,人数:24人,其中男性:16人\n",
"40~44岁平均成绩:2.63分,人数:70人,其中男性:50人\n",
"45~49岁平均成绩:2.48分,人数:130人,其中男性:105人\n",
"50~54岁平均成绩:2.67分,人数:134人,其中男性:111人\n",
"55~69岁平均成绩:2.79分,人数:17人,其中男性:16人\n",
"\n",
"\n",
"储运厂工会 年龄构成情况:\n",
"20~24岁平均成绩:2.27分,人数:35人,其中男性:27人\n",
"25~29岁平均成绩:2.55分,人数:21人,其中男性:10人\n",
"30~34岁平均成绩:2.42分,人数:16人,其中男性:12人\n",
"35~39岁平均成绩:2.43分,人数:37人,其中男性:29人\n",
"40~44岁平均成绩:2.43分,人数:174人,其中男性:125人\n",
"45~49岁平均成绩:2.41分,人数:248人,其中男性:161人\n",
"50~54岁平均成绩:2.35分,人数:261人,其中男性:252人\n",
"55~69岁平均成绩:2.27分,人数:191人,其中男性:191人\n",
"\n",
"\n",
"合成橡胶厂工会 年龄构成情况:\n",
"20~24岁平均成绩:2.5分,人数:71人,其中男性:52人\n",
"25~29岁平均成绩:2.65分,人数:34人,其中男性:20人\n",
"30~34岁平均成绩:2.44分,人数:49人,其中男性:33人\n",
"35~39岁平均成绩:2.69分,人数:63人,其中男性:39人\n",
"40~44岁平均成绩:2.47分,人数:117人,其中男性:78人\n",
"45~49岁平均成绩:2.49分,人数:139人,其中男性:94人\n",
"50~54岁平均成绩:2.37分,人数:163人,其中男性:150人\n",
"55~69岁平均成绩:2.31分,人数:77人,其中男性:77人\n",
"\n",
"\n",
"检验计量中心工会 年龄构成情况:\n",
"20~24岁平均成绩:2.42分,人数:22人,其中男性:11人\n",
"25~29岁平均成绩:2.36分,人数:17人,其中男性:9人\n",
"30~34岁平均成绩:2.6分,人数:11人,其中男性:6人\n",
"35~39岁平均成绩:2.87分,人数:34人,其中男性:10人\n",
"40~44岁平均成绩:2.65分,人数:119人,其中男性:34人\n",
"45~49岁平均成绩:2.66分,人数:181人,其中男性:56人\n",
"50~54岁平均成绩:2.58分,人数:188人,其中男性:128人\n",
"55~69岁平均成绩:2.55分,人数:60人,其中男性:57人\n",
"\n",
"\n",
"烯烃厂工会 年龄构成情况:\n",
"20~24岁平均成绩:2.52分,人数:38人,其中男性:23人\n",
"25~29岁平均成绩:2.57分,人数:39人,其中男性:22人\n",
"30~34岁平均成绩:2.66分,人数:7人,其中男性:6人\n",
"35~39岁平均成绩:2.66分,人数:30人,其中男性:21人\n",
"40~44岁平均成绩:2.53分,人数:95人,其中男性:70人\n",
"45~49岁平均成绩:2.75分,人数:83人,其中男性:60人\n",
"50~54岁平均成绩:2.59分,人数:89人,其中男性:82人\n",
"55~69岁平均成绩:2.37分,人数:29人,其中男性:29人\n",
"\n",
"\n",
"化学品厂工会 年龄构成情况:\n",
"20~24岁平均成绩:2.39分,人数:40人,其中男性:31人\n",
"25~29岁平均成绩:2.24分,人数:37人,其中男性:28人\n",
"30~34岁平均成绩:2.37分,人数:22人,其中男性:15人\n",
"35~39岁平均成绩:2.37分,人数:26人,其中男性:16人\n",
"40~44岁平均成绩:2.48分,人数:62人,其中男性:44人\n",
"45~49岁平均成绩:2.44分,人数:53人,其中男性:40人\n",
"50~54岁平均成绩:2.33分,人数:89人,其中男性:83人\n",
"55~69岁平均成绩:2.56分,人数:39人,其中男性:39人\n",
"\n",
"\n",
"合成树脂厂 年龄构成情况:\n",
"20~24岁平均成绩:2.14分,人数:29人,其中男性:25人\n",
"25~29岁平均成绩:2.36分,人数:28人,其中男性:13人\n",
"30~34岁平均成绩:2.49分,人数:20人,其中男性:12人\n",
"35~39岁平均成绩:2.36分,人数:20人,其中男性:15人\n",
"40~44岁平均成绩:2.58分,人数:91人,其中男性:69人\n",
"45~49岁平均成绩:2.53分,人数:130人,其中男性:104人\n",
"50~54岁平均成绩:2.48分,人数:92人,其中男性:84人\n",
"55~69岁平均成绩:2.2分,人数:33人,其中男性:33人\n",
"\n",
"\n",
"生产运行保障中心 年龄构成情况:\n",
"20~24岁平均成绩:2.5分,人数:2人,其中男性:2人\n",
"25~29岁平均成绩:2.74分,人数:4人,其中男性:3人\n",
"30~34岁平均成绩:2.38分,人数:4人,其中男性:3人\n",
"35~39岁平均成绩:2.82分,人数:14人,其中男性:9人\n",
"40~44岁平均成绩:2.74分,人数:31人,其中男性:22人\n",
"45~49岁平均成绩:2.58分,人数:58人,其中男性:40人\n",
"50~54岁平均成绩:2.53分,人数:126人,其中男性:112人\n",
"55~69岁平均成绩:2.52分,人数:132人,其中男性:132人\n",
"\n",
"\n",
"高科公司工会 年龄构成情况:\n",
"20~24岁平均成绩:2.45分,人数:23人,其中男性:14人\n",
"25~29岁平均成绩:2.7分,人数:31人,其中男性:10人\n",
"30~34岁平均成绩:2.62分,人数:15人,其中男性:9人\n",
"35~39岁平均成绩:2.9分,人数:32人,其中男性:12人\n",
"40~44岁平均成绩:2.68分,人数:28人,其中男性:12人\n",
"45~49岁平均成绩:2.8分,人数:52人,其中男性:29人\n",
"50~54岁平均成绩:2.72分,人数:76人,其中男性:41人\n",
"55~69岁平均成绩:2.53分,人数:47人,其中男性:43人\n",
"\n",
"\n",
"机关工会 年龄构成情况:\n",
"20~24岁平均成绩:0分,人数:0人,其中男性:0人\n",
"25~29岁平均成绩:2.66分,人数:15人,其中男性:9人\n",
"30~34岁平均成绩:2.77分,人数:31人,其中男性:14人\n",
"35~39岁平均成绩:2.88分,人数:74人,其中男性:36人\n",
"40~44岁平均成绩:2.92分,人数:76人,其中男性:31人\n",
"45~49岁平均成绩:2.84分,人数:42人,其中男性:24人\n",
"50~54岁平均成绩:2.81分,人数:93人,其中男性:48人\n",
"55~69岁平均成绩:2.78分,人数:47人,其中男性:43人\n",
"\n",
"\n",
"行政事务中心(离退中心)工会 年龄构成情况:\n",
"20~24岁平均成绩:2.58分,人数:3人,其中男性:2人\n",
"25~29岁平均成绩:2.61分,人数:12人,其中男性:3人\n",
"30~34岁平均成绩:2.7分,人数:12人,其中男性:7人\n",
"35~39岁平均成绩:3.16分,人数:37人,其中男性:9人\n",
"40~44岁平均成绩:2.76分,人数:60人,其中男性:25人\n",
"45~49岁平均成绩:2.92分,人数:96人,其中男性:33人\n",
"50~54岁平均成绩:2.78分,人数:186人,其中男性:99人\n",
"55~69岁平均成绩:2.5分,人数:118人,其中男性:113人\n",
"\n",
"\n",
"教育培训中心工会 年龄构成情况:\n",
"20~24岁平均成绩:3.0分,人数:3人,其中男性:2人\n",
"25~29岁平均成绩:2.62分,人数:3人,其中男性:1人\n",
"30~34岁平均成绩:3.0分,人数:2人,其中男性:1人\n",
"35~39岁平均成绩:3.05分,人数:5人,其中男性:1人\n",
"40~44岁平均成绩:3.11分,人数:11人,其中男性:2人\n",
"45~49岁平均成绩:2.86分,人数:12人,其中男性:3人\n",
"50~54岁平均成绩:2.66分,人数:19人,其中男性:9人\n",
"55~69岁平均成绩:2.32分,人数:17人,其中男性:17人\n",
"\n",
"\n",
"物装中心工会 年龄构成情况:\n",
"20~24岁平均成绩:2.22分,人数:5人,其中男性:2人\n",
"25~29岁平均成绩:2.86分,人数:4人,其中男性:0人\n",
"30~34岁平均成绩:2.48分,人数:3人,其中男性:2人\n",
"35~39岁平均成绩:2.65分,人数:18人,其中男性:11人\n",
"40~44岁平均成绩:2.87分,人数:23人,其中男性:10人\n",
"45~49岁平均成绩:2.79分,人数:33人,其中男性:11人\n",
"50~54岁平均成绩:2.68分,人数:62人,其中男性:41人\n",
"55~69岁平均成绩:2.46分,人数:34人,其中男性:31人\n",
"\n",
"\n",
"消防中心工会 年龄构成情况:\n",
"20~24岁平均成绩:2.99分,人数:15人,其中男性:12人\n",
"25~29岁平均成绩:2.81分,人数:60人,其中男性:60人\n",
"30~34岁平均成绩:2.94分,人数:36人,其中男性:33人\n",
"35~39岁平均成绩:2.96分,人数:22人,其中男性:20人\n",
"40~44岁平均成绩:2.99分,人数:7人,其中男性:7人\n",
"45~49岁平均成绩:2.84分,人数:14人,其中男性:12人\n",
"50~54岁平均成绩:2.87分,人数:14人,其中男性:13人\n",
"55~69岁平均成绩:2.49分,人数:46人,其中男性:46人\n",
"\n",
"\n"
]
}
],
"source": [
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,69]]\n",
"\n",
"\n",
"for bumen in depart:\n",
" print(bumen,'年龄构成情况:')\n",
" for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" i = 0\n",
" score = 0\n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['unit']== bumen and v['age'] in range(di,gao+1):\n",
" score = score+v['score']\n",
" i+=1\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" if i > 0:\n",
" print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i}人,其中男性:{m}人')\n",
" else:\n",
" print(f'{di}~{gao}岁平均成绩:0分,人数:{i}人,其中男性:{m}人')\n",
" print('\\n')"
]
},
{
"cell_type": "markdown",
"id": "243e800f-2ee1-4356-a877-eb4baae0ef4d",
"metadata": {},
"source": [
"### 部门平均成绩情况"
]
},
{
"cell_type": "code",
"execution_count": 229,
"id": "0a0108ec-48b0-402b-8ae2-2c40da8f3539",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-13T22:07:24.365857Z",
"iopub.status.busy": "2023-06-13T22:07:24.365018Z",
"iopub.status.idle": "2023-06-13T22:07:24.489538Z",
"shell.execute_reply": "2023-06-13T22:07:24.488546Z",
"shell.execute_reply.started": "2023-06-13T22:07:24.365816Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"热电厂工会 平均成绩情况:\n",
"平均成绩:2.324分,男性:564人\n",
"平均成绩:2.8233分,女性:117人\n",
"平均成绩:2.4098分\n",
"\n",
"\n",
"炼油厂工会 平均成绩情况:\n",
"平均成绩:2.3999分,男性:755人\n",
"平均成绩:2.7115分,女性:251人\n",
"平均成绩:2.4776分\n",
"\n",
"\n",
"有机化工厂工会 平均成绩情况:\n",
"平均成绩:2.4811分,男性:346人\n",
"平均成绩:2.8975分,女性:100人\n",
"平均成绩:2.5745分\n",
"\n",
"\n",
"储运厂工会 平均成绩情况:\n",
"平均成绩:2.3078分,男性:807人\n",
"平均成绩:2.6554分,女性:176人\n",
"平均成绩:2.37分\n",
"\n",
"\n",
"合成橡胶厂工会 平均成绩情况:\n",
"平均成绩:2.3402分,男性:543人\n",
"平均成绩:2.8497分,女性:170人\n",
"平均成绩:2.4617分\n",
"\n",
"\n",
"检验计量中心工会 平均成绩情况:\n",
"平均成绩:2.4316分,男性:311人\n",
"平均成绩:2.7953分,女性:321人\n",
"平均成绩:2.6163分\n",
"\n",
"\n",
"烯烃厂工会 平均成绩情况:\n",
"平均成绩:2.5136分,男性:313人\n",
"平均成绩:2.8424分,女性:97人\n",
"平均成绩:2.5914分\n",
"\n",
"\n",
"化学品厂工会 平均成绩情况:\n",
"平均成绩:2.3331分,男性:296人\n",
"平均成绩:2.6631分,女性:72人\n",
"平均成绩:2.3976分\n",
"\n",
"\n",
"合成树脂厂 平均成绩情况:\n",
"平均成绩:2.3728分,男性:355人\n",
"平均成绩:2.8073分,女性:88人\n",
"平均成绩:2.4591分\n",
"\n",
"\n",
"生产运行保障中心 平均成绩情况:\n",
"平均成绩:2.5021分,男性:323人\n",
"平均成绩:2.9733分,女性:48人\n",
"平均成绩:2.5631分\n",
"\n",
"\n",
"高科公司工会 平均成绩情况:\n",
"平均成绩:2.5194分,男性:170人\n",
"平均成绩:2.9113分,女性:134人\n",
"平均成绩:2.6922分\n",
"\n",
"\n",
"机关工会 平均成绩情况:\n",
"平均成绩:2.6187分,男性:205人\n",
"平均成绩:3.0942分,女性:173人\n",
"平均成绩:2.8363分\n",
"\n",
"\n",
"行政事务中心(离退中心)工会 平均成绩情况:\n",
"平均成绩:2.516分,男性:291人\n",
"平均成绩:3.0667分,女性:233人\n",
"平均成绩:2.7609分\n",
"\n",
"\n",
"教育培训中心工会 平均成绩情况:\n",
"平均成绩:2.3817分,男性:36人\n",
"平均成绩:3.0794分,女性:36人\n",
"平均成绩:2.7306分\n",
"\n",
"\n",
"物装中心工会 平均成绩情况:\n",
"平均成绩:2.5006分,男性:108人\n",
"平均成绩:2.9115分,女性:74人\n",
"平均成绩:2.6677分\n",
"\n",
"\n",
"消防中心工会 平均成绩情况:\n",
"平均成绩:2.7924分,男性:203人\n",
"平均成绩:3.0464分,女性:11人\n",
"平均成绩:2.8054分\n",
"\n",
"\n"
]
}
],
"source": [
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,69]]\n",
"for bumen in depart:\n",
" print(bumen,'平均成绩情况:')\n",
" i = 0\n",
" m = 0\n",
" f = 0\n",
" score = 0\n",
" t_score = 0\n",
" for k,v in dict1.items():\n",
" if v['unit']== bumen and v['sex'] == '男':\n",
" m = m +1\n",
" score = score+v['score']\n",
" print(f'平均成绩:{round(score/m,4)}分,男性:{m}人')\n",
" t_score = t_score + score\n",
" score = 0\n",
" for k,v in dict1.items():\n",
" if v['unit']== bumen and v['sex'] == '女':\n",
" f = f +1\n",
" score = score+v['score']\n",
" print(f'平均成绩:{round(score/f,4)}分,女性:{f}人')\n",
" t_score = t_score + score\n",
" print(f'平均成绩:{round(t_score/(m+f),4)}分')\n",
" print('\\n')"
]
},
{
"cell_type": "markdown",
"id": "ad92a478-1992-4af4-b9d3-c47d2f3d0245",
"metadata": {},
"source": [
"### 部门测试等级情况"
]
},
{
"cell_type": "code",
"execution_count": 233,
"id": "b0de1c76-d54f-4a72-8fce-89ab3941236f",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-13T23:02:34.774694Z",
"iopub.status.busy": "2023-06-13T23:02:34.774281Z",
"iopub.status.idle": "2023-06-13T23:02:35.184157Z",
"shell.execute_reply": "2023-06-13T23:02:35.183209Z",
"shell.execute_reply.started": "2023-06-13T23:02:34.774666Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"热电厂工会 测试等级情况:\n",
"20-24 {'不合格': 3, '合格': 5}\n",
"25-29 {'不合格': 0, '合格': 5, '优秀': 1}\n",
"30-34 {'合格': 3, '不合格': 0}\n",
"35-39 {'合格': 7, '不合格': 3, '良好': 2}\n",
"40-44 {'不合格': 9, '合格': 19, '良好': 5, '优秀': 2}\n",
"45-49 {'不合格': 12, '合格': 17, '优秀': 2, '良好': 6}\n",
"50-54 {'不合格': 4, '合格': 4, '良好': 5, '优秀': 1}\n",
"55-80 {'合格': 0, '不合格': 0, '良好': 2}\n",
"\n",
"\n",
"炼油厂工会 测试等级情况:\n",
"20-24 {'不合格': 7, '合格': 11, '良好': 1}\n",
"25-29 {'不合格': 2, '合格': 13, '良好': 6}\n",
"30-34 {'不合格': 3, '合格': 7, '良好': 3, '优秀': 3}\n",
"35-39 {'不合格': 8, '合格': 19, '良好': 5}\n",
"40-44 {'不合格': 34, '合格': 30, '良好': 8, '优秀': 3}\n",
"45-49 {'不合格': 27, '合格': 43, '良好': 7, '优秀': 3}\n",
"50-54 {'不合格': 1, '良好': 2, '合格': 5, '优秀': 0}\n",
"55-80 {'不合格': 0, '合格': 0, '良好': 0, '优秀': 0}\n",
"\n",
"\n",
"有机化工厂工会 测试等级情况:\n",
"20-24 {'不合格': 4, '合格': 3}\n",
"25-29 {'不合格': 3, '合格': 5, '良好': 3}\n",
"30-34 {'合格': 3, '不合格': 1, '优秀': 1}\n",
"35-39 {'合格': 6, '不合格': 2, '良好': 0}\n",
"40-44 {'良好': 4, '不合格': 3, '合格': 13, '优秀': 0}\n",
"45-49 {'不合格': 7, '良好': 9, '合格': 9, '优秀': 0}\n",
"50-54 {'不合格': 1, '合格': 14, '良好': 6, '优秀': 2}\n",
"55-80 {'良好': 1, '合格': 0, '不合格': 0, '优秀': 0}\n",
"\n",
"\n",
"储运厂工会 测试等级情况:\n",
"20-24 {'不合格': 3, '合格': 5, '良好': 0}\n",
"25-29 {'合格': 4, '良好': 3, '不合格': 4}\n",
"30-34 {'不合格': 1, '合格': 2, '良好': 1, '优秀': 0}\n",
"35-39 {'不合格': 3, '良好': 0, '合格': 5, '优秀': 0}\n",
"40-44 {'不合格': 21, '合格': 20, '良好': 7, '优秀': 1}\n",
"45-49 {'不合格': 36, '合格': 37, '良好': 13, '优秀': 1}\n",
"50-54 {'不合格': 1, '优秀': 0, '合格': 6, '良好': 2}\n",
"55-80 {'不合格': 0, '合格': 0, '良好': 0, '优秀': 0}\n",
"\n",
"\n",
"合成橡胶厂工会 测试等级情况:\n",
"20-24 {'不合格': 4, '合格': 14, '优秀': 1, '良好': 0}\n",
"25-29 {'不合格': 2, '良好': 4, '合格': 7, '优秀': 1}\n",
"30-34 {'不合格': 3, '合格': 9, '良好': 4}\n",
"35-39 {'合格': 14, '良好': 4, '不合格': 5, '优秀': 1}\n",
"40-44 {'不合格': 13, '合格': 21, '良好': 4, '优秀': 1}\n",
"45-49 {'不合格': 10, '合格': 31, '良好': 1, '优秀': 3}\n",
"50-54 {'不合格': 1, '合格': 9, '良好': 3, '优秀': 0}\n",
"55-80 {'不合格': 0, '合格': 0, '良好': 0}\n",
"\n",
"\n",
"检验计量中心工会 测试等级情况:\n",
"20-24 {'不合格': 7, '合格': 3, '良好': 1}\n",
"25-29 {'不合格': 4, '合格': 3, '良好': 1}\n",
"30-34 {'合格': 5, '不合格': 0}\n",
"35-39 {'合格': 15, '不合格': 4, '良好': 3, '优秀': 2}\n",
"40-44 {'不合格': 24, '合格': 46, '良好': 10, '优秀': 5}\n",
"45-49 {'合格': 63, '良好': 18, '优秀': 5, '不合格': 39}\n",
"50-54 {'不合格': 10, '合格': 40, '优秀': 2, '良好': 8}\n",
"55-80 {'不合格': 0, '合格': 2, '良好': 1}\n",
"\n",
"\n",
"烯烃厂工会 测试等级情况:\n",
"20-24 {'合格': 9, '不合格': 6, '良好': 0}\n",
"25-29 {'合格': 9, '不合格': 6, '良好': 2}\n",
"30-34 {'不合格': 1, '良好': 0, '合格': 0}\n",
"35-39 {'不合格': 1, '合格': 6, '良好': 2, '优秀': 0}\n",
"40-44 {'不合格': 8, '合格': 11, '良好': 4, '优秀': 2}\n",
"45-49 {'合格': 11, '良好': 6, '不合格': 3, '优秀': 3}\n",
"50-54 {'合格': 4, '不合格': 2, '良好': 1, '优秀': 0}\n",
"55-80 {'合格': 0, '不合格': 0}\n",
"\n",
"\n",
"化学品厂工会 测试等级情况:\n",
"20-24 {'良好': 1, '不合格': 4, '合格': 4}\n",
"25-29 {'不合格': 5, '合格': 4, '良好': 0}\n",
"30-34 {'合格': 4, '不合格': 2, '良好': 1}\n",
"35-39 {'不合格': 4, '合格': 5, '良好': 1}\n",
"40-44 {'合格': 5, '不合格': 6, '优秀': 4, '良好': 3}\n",
"45-49 {'良好': 2, '不合格': 8, '合格': 3}\n",
"50-54 {'合格': 3, '不合格': 2, '良好': 1, '优秀': 0}\n",
"55-80 {'不合格': 0, '合格': 0, '良好': 0, '优秀': 0}\n",
"\n",
"\n",
"合成树脂厂 测试等级情况:\n",
"20-24 {'合格': 3, '不合格': 1}\n",
"25-29 {'合格': 5, '不合格': 7, '良好': 3}\n",
"30-34 {'不合格': 1, '合格': 4, '良好': 3}\n",
"35-39 {'不合格': 3, '合格': 2, '良好': 0}\n",
"40-44 {'合格': 10, '不合格': 6, '良好': 5, '优秀': 1}\n",
"45-49 {'不合格': 5, '合格': 15, '良好': 4, '优秀': 2}\n",
"50-54 {'合格': 5, '不合格': 1, '良好': 2}\n",
"55-80 {'不合格': 0, '合格': 0, '良好': 0, '优秀': 0}\n",
"\n",
"\n",
"生产运行保障中心 测试等级情况:\n",
"20-24 {'不合格': 0, '合格': 0}\n",
"25-29 {'良好': 1, '不合格': 0}\n",
"30-34 {'合格': 0, '不合格': 1}\n",
"35-39 {'合格': 3, '不合格': 0, '良好': 2}\n",
"40-44 {'良好': 2, '不合格': 2, '合格': 4, '优秀': 1}\n",
"45-49 {'不合格': 3, '合格': 11, '优秀': 0, '良好': 4}\n",
"50-54 {'不合格': 3, '合格': 5, '良好': 4, '优秀': 2}\n",
"55-80 {'不合格': 0, '合格': 0, '优秀': 0, '良好': 0}\n",
"\n",
"\n",
"高科公司工会 测试等级情况:\n",
"20-24 {'合格': 5, '不合格': 3, '优秀': 1}\n",
"25-29 {'不合格': 6, '合格': 9, '良好': 6}\n",
"30-34 {'不合格': 1, '合格': 4, '良好': 1}\n",
"35-39 {'合格': 12, '良好': 5, '不合格': 2, '优秀': 1}\n",
"40-44 {'合格': 9, '不合格': 5, '良好': 0, '优秀': 2}\n",
"45-49 {'不合格': 2, '合格': 16, '优秀': 1, '良好': 4}\n",
"50-54 {'不合格': 9, '良好': 4, '合格': 19, '优秀': 3}\n",
"55-80 {'不合格': 0, '合格': 2, '良好': 2}\n",
"\n",
"\n",
"机关工会 测试等级情况:\n",
"20-24 {}\n",
"25-29 {'优秀': 1, '不合格': 1, '良好': 2, '合格': 2}\n",
"30-34 {'合格': 10, '不合格': 2, '良好': 4, '优秀': 1}\n",
"35-39 {'优秀': 6, '合格': 17, '不合格': 4, '良好': 11}\n",
"40-44 {'合格': 25, '不合格': 5, '良好': 11, '优秀': 4}\n",
"45-49 {'合格': 12, '不合格': 2, '良好': 1, '优秀': 3}\n",
"50-54 {'合格': 23, '不合格': 6, '良好': 10, '优秀': 6}\n",
"55-80 {'优秀': 1, '合格': 1, '良好': 0, '不合格': 2}\n",
"\n",
"\n",
"行政事务中心(离退中心)工会 测试等级情况:\n",
"20-24 {'良好': 1, '不合格': 0}\n",
"25-29 {'不合格': 2, '合格': 4, '良好': 3}\n",
"30-34 {'合格': 4, '不合格': 0, '良好': 1}\n",
"35-39 {'良好': 14, '合格': 11, '优秀': 1, '不合格': 2}\n",
"40-44 {'不合格': 8, '合格': 16, '良好': 5, '优秀': 6}\n",
"45-49 {'合格': 31, '优秀': 13, '良好': 10, '不合格': 9}\n",
"50-54 {'合格': 34, '良好': 24, '不合格': 19, '优秀': 10}\n",
"55-80 {'合格': 2, '不合格': 2, '良好': 1, '优秀': 0}\n",
"\n",
"\n",
"教育培训中心工会 测试等级情况:\n",
"20-24 {'良好': 1, '合格': 0}\n",
"25-29 {'不合格': 1, '良好': 1}\n",
"30-34 {'合格': 0, '良好': 1}\n",
"35-39 {'合格': 3, '不合格': 0, '良好': 1}\n",
"40-44 {'优秀': 2, '不合格': 1, '合格': 4, '良好': 2}\n",
"45-49 {'不合格': 0, '合格': 6, '良好': 3}\n",
"50-54 {'合格': 6, '不合格': 2, '良好': 2}\n",
"55-80 {'不合格': 0, '合格': 0, '良好': 0}\n",
"\n",
"\n",
"物装中心工会 测试等级情况:\n",
"20-24 {'不合格': 2, '合格': 1}\n",
"25-29 {'合格': 4}\n",
"30-34 {'不合格': 0, '合格': 1}\n",
"35-39 {'合格': 1, '不合格': 3, '良好': 2, '优秀': 1}\n",
"40-44 {'合格': 8, '不合格': 1, '良好': 2, '优秀': 2}\n",
"45-49 {'合格': 11, '良好': 5, '不合格': 4, '优秀': 2}\n",
"50-54 {'合格': 15, '不合格': 3, '良好': 3, '优秀': 0}\n",
"55-80 {'合格': 2, '不合格': 1, '良好': 0}\n",
"\n",
"\n",
"消防中心工会 测试等级情况:\n",
"20-24 {'良好': 0, '合格': 2, '优秀': 1, '不合格': 0}\n",
"25-29 {'不合格': 0, '合格': 0, '良好': 0, '优秀': 0}\n",
"30-34 {'合格': 2, '不合格': 1, '良好': 0, '优秀': 0}\n",
"35-39 {'不合格': 0, '良好': 0, '合格': 2, '优秀': 0}\n",
"40-44 {'不合格': 0, '良好': 0, '合格': 0}\n",
"45-49 {'不合格': 0, '合格': 0, '良好': 2}\n",
"50-54 {'合格': 1, '良好': 0, '不合格': 0, '优秀': 0}\n",
"55-80 {'不合格': 0, '合格': 0, '良好': 0}\n",
"\n",
"\n"
]
}
],
"source": [
"dict2 = {}\n",
"dict2['不合格'] = [0,255]\n",
"dict2['合格'] = [256,332]\n",
"dict2['良好'] = [333,367]\n",
"dict2['优秀'] = [368,500]\n",
"for bumen in depart:\n",
" print(bumen,'测试等级情况:')\n",
" dict3 = {}\n",
" for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" age = f'{di}-{gao}'\n",
" dict3.setdefault(age,{})\n",
" i = 0 \n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['unit']== bumen and v['age'] in range(di,gao+1): \n",
" dict3[age].setdefault(v['level'],0)\n",
" if v['sex'] == '女':\n",
" dict3[age][v['level']] = dict3[age][v['level']]+1\n",
"\n",
" for k, v in dict3.items():\n",
" print(k,v)\n",
" print('\\n')\n"
]
},
{
"cell_type": "code",
"execution_count": 178,
"id": "478df7bb-a5a9-44b7-819c-62ade471067e",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-13T07:40:13.395897Z",
"iopub.status.busy": "2023-06-13T07:40:13.395390Z",
"iopub.status.idle": "2023-06-13T07:40:13.602619Z",
"shell.execute_reply": "2023-06-13T07:40:13.601614Z",
"shell.execute_reply.started": "2023-06-13T07:40:13.395866Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"热电厂工会 测试等级情况:\n",
"不合格人数:389人,男性:358人,女性:31人\n",
"合格人数:238人,男性:178人,女性:60人\n",
"良好人数:48人,男性:28人,女性:20人\n",
"优秀人数:6人,男性:0人,女性:6人\n",
"\n",
"\n",
"炼油厂工会 测试等级情况:\n",
"不合格人数:516人,男性:434人,女性:82人\n",
"合格人数:392人,男性:264人,女性:128人\n",
"良好人数:75人,男性:43人,女性:32人\n",
"优秀人数:23人,男性:14人,女性:9人\n",
"\n",
"\n",
"有机化工厂工会 测试等级情况:\n",
"不合格人数:185人,男性:164人,女性:21人\n",
"合格人数:210人,男性:157人,女性:53人\n",
"良好人数:43人,男性:20人,女性:23人\n",
"优秀人数:8人,男性:5人,女性:3人\n",
"\n",
"\n",
"储运厂工会 测试等级情况:\n",
"不合格人数:599人,男性:530人,女性:69人\n",
"合格人数:307人,男性:228人,女性:79人\n",
"良好人数:64人,男性:38人,女性:26人\n",
"优秀人数:13人,男性:11人,女性:2人\n",
"\n",
"\n",
"合成橡胶厂工会 测试等级情况:\n",
"不合格人数:366人,男性:328人,女性:38人\n",
"合格人数:284人,男性:179人,女性:105人\n",
"良好人数:50人,男性:30人,女性:20人\n",
"优秀人数:13人,男性:6人,女性:7人\n",
"\n",
"\n",
"检验计量中心工会 测试等级情况:\n",
"不合格人数:252人,男性:164人,女性:88人\n",
"合格人数:299人,男性:122人,女性:177人\n",
"良好人数:63人,男性:21人,女性:42人\n",
"优秀人数:18人,男性:4人,女性:14人\n",
"\n",
"\n",
"烯烃厂工会 测试等级情况:\n",
"不合格人数:179人,男性:152人,女性:27人\n",
"合格人数:179人,男性:129人,女性:50人\n",
"良好人数:39人,男性:24人,女性:15人\n",
"优秀人数:13人,男性:8人,女性:5人\n",
"\n",
"\n",
"化学品厂工会 测试等级情况:\n",
"不合格人数:214人,男性:183人,女性:31人\n",
"合格人数:118人,男性:90人,女性:28人\n",
"良好人数:29人,男性:20人,女性:9人\n",
"优秀人数:7人,男性:3人,女性:4人\n",
"\n",
"\n",
"合成树脂厂 测试等级情况:\n",
"不合格人数:233人,男性:209人,女性:24人\n",
"合格人数:164人,男性:120人,女性:44人\n",
"良好人数:40人,男性:23人,女性:17人\n",
"优秀人数:6人,男性:3人,女性:3人\n",
"\n",
"\n",
"生产运行保障中心 测试等级情况:\n",
"不合格人数:175人,男性:166人,女性:9人\n",
"合格人数:157人,男性:134人,女性:23人\n",
"良好人数:33人,男性:20人,女性:13人\n",
"优秀人数:6人,男性:3人,女性:3人\n",
"\n",
"\n",
"高科公司工会 测试等级情况:\n",
"不合格人数:117人,男性:89人,女性:28人\n",
"合格人数:145人,男性:69人,女性:76人\n",
"良好人数:33人,男性:11人,女性:22人\n",
"优秀人数:9人,男性:1人,女性:8人\n",
"\n",
"\n",
"机关工会 测试等级情况:\n",
"不合格人数:110人,男性:88人,女性:22人\n",
"合格人数:179人,男性:89人,女性:90人\n",
"良好人数:63人,男性:24人,女性:39人\n",
"优秀人数:26人,男性:4人,女性:22人\n",
"\n",
"\n",
"行政事务中心(离退中心)工会 测试等级情况:\n",
"不合格人数:178人,男性:136人,女性:42人\n",
"合格人数:216人,男性:114人,女性:102人\n",
"良好人数:95人,男性:36人,女性:59人\n",
"优秀人数:35人,男性:5人,女性:30人\n",
"\n",
"\n",
"教育培训中心工会 测试等级情况:\n",
"不合格人数:22人,男性:18人,女性:4人\n",
"合格人数:36人,男性:17人,女性:19人\n",
"良好人数:12人,男性:1人,女性:11人\n",
"优秀人数:2人,男性:0人,女性:2人\n",
"\n",
"\n",
"物装中心工会 测试等级情况:\n",
"不合格人数:70人,男性:56人,女性:14人\n",
"合格人数:84人,男性:41人,女性:43人\n",
"良好人数:21人,男性:9人,女性:12人\n",
"优秀人数:7人,男性:2人,女性:5人\n",
"\n",
"\n",
"消防中心工会 测试等级情况:\n",
"不合格人数:62人,男性:61人,女性:1人\n",
"合格人数:109人,男性:102人,女性:7人\n",
"良好人数:37人,男性:35人,女性:2人\n",
"优秀人数:6人,男性:5人,女性:1人\n",
"\n",
"\n"
]
}
],
"source": [
"dict2 = {}\n",
"dict2['不合格'] = [0,255]\n",
"dict2['合格'] = [256,332]\n",
"dict2['良好'] = [333,367]\n",
"dict2['优秀'] = [368,500]\n",
"for bumen in depart:\n",
" print(bumen,'测试等级情况:')\n",
" dict3 = {}\n",
" for k1, v1 in dict2.items():\n",
" di = v1[0]\n",
" gao = v1[1]\n",
" i = 0 \n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['unit']== bumen and int(v['score']*100) in range(di,gao+1):\n",
" dict1[k]['level'] = k1\n",
" i+=1\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" else:\n",
" f = f+1\n",
" print(f'{k1}人数:{i}人,男性:{m}人,女性:{f}人')\n",
" print('\\n')"
]
},
{
"cell_type": "markdown",
"id": "5b9948d6-a17c-46b0-a9ba-fb969d7edfa5",
"metadata": {},
"source": [
"### 各项目测试情况"
]
},
{
"cell_type": "code",
"execution_count": 181,
"id": "94e95b2e-99db-40d7-8c71-c3c836509ab2",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-13T07:52:03.559187Z",
"iopub.status.busy": "2023-06-13T07:52:03.558332Z",
"iopub.status.idle": "2023-06-13T07:52:04.179419Z",
"shell.execute_reply": "2023-06-13T07:52:04.178441Z",
"shell.execute_reply.started": "2023-06-13T07:52:03.559146Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"热电厂工会 测试等级情况:\n",
"体重 3.37 681\n",
"肺活量 2.74 674\n",
"握力 2.18 679\n",
"坐位体前屈 2.68 557\n",
"纵跳 1.71 627\n",
"俯卧撑 2.03 449\n",
"一分钟仰卧起坐 3.85 81\n",
"单脚站立 1.54 668\n",
"选择反应时 2.67 669\n",
"台阶指数 2.83 352\n",
"\n",
"\n",
"炼油厂工会 测试等级情况:\n",
"体重 3.29 1006\n",
"肺活量 2.94 993\n",
"握力 2.35 993\n",
"坐位体前屈 2.73 868\n",
"纵跳 1.98 951\n",
"俯卧撑 2.08 606\n",
"一分钟仰卧起坐 3.73 183\n",
"单脚站立 1.46 977\n",
"选择反应时 2.68 990\n",
"台阶指数 2.69 667\n",
"\n",
"\n",
"有机化工厂工会 测试等级情况:\n",
"体重 3.41 446\n",
"肺活量 3.0 446\n",
"握力 2.52 441\n",
"坐位体前屈 2.65 397\n",
"纵跳 1.89 420\n",
"俯卧撑 2.08 283\n",
"一分钟仰卧起坐 3.88 81\n",
"单脚站立 1.85 440\n",
"选择反应时 2.81 441\n",
"台阶指数 2.69 301\n",
"\n",
"\n",
"储运厂工会 测试等级情况:\n",
"体重 3.24 983\n",
"肺活量 2.73 975\n",
"握力 2.34 980\n",
"坐位体前屈 2.71 860\n",
"纵跳 1.5 943\n",
"俯卧撑 1.82 661\n",
"一分钟仰卧起坐 3.56 151\n",
"单脚站立 1.42 967\n",
"选择反应时 2.71 962\n",
"台阶指数 2.87 650\n",
"\n",
"\n",
"合成橡胶厂工会 测试等级情况:\n",
"体重 3.3 713\n",
"肺活量 2.82 711\n",
"握力 2.28 713\n",
"坐位体前屈 2.73 637\n",
"纵跳 1.91 685\n",
"俯卧撑 2.01 450\n",
"一分钟仰卧起坐 3.76 140\n",
"单脚站立 1.59 706\n",
"选择反应时 2.62 705\n",
"台阶指数 2.75 489\n",
"\n",
"\n",
"检验计量中心工会 测试等级情况:\n",
"体重 3.79 632\n",
"肺活量 2.84 627\n",
"握力 2.3 626\n",
"坐位体前屈 2.78 562\n",
"纵跳 1.88 611\n",
"俯卧撑 2.14 248\n",
"一分钟仰卧起坐 3.73 252\n",
"单脚站立 1.84 626\n",
"选择反应时 2.8 619\n",
"台阶指数 2.69 458\n",
"\n",
"\n",
"烯烃厂工会 测试等级情况:\n",
"体重 3.3 410\n",
"肺活量 3.09 407\n",
"握力 2.36 408\n",
"坐位体前屈 2.9 366\n",
"纵跳 2.01 391\n",
"俯卧撑 2.47 245\n",
"一分钟仰卧起坐 3.88 82\n",
"单脚站立 1.66 395\n",
"选择反应时 2.63 404\n",
"台阶指数 2.76 293\n",
"\n",
"\n",
"化学品厂工会 测试等级情况:\n",
"体重 3.13 368\n",
"肺活量 2.94 359\n",
"握力 2.42 365\n",
"坐位体前屈 2.52 322\n",
"纵跳 1.85 345\n",
"俯卧撑 1.88 241\n",
"一分钟仰卧起坐 3.66 47\n",
"单脚站立 1.49 360\n",
"选择反应时 2.58 361\n",
"台阶指数 2.63 239\n",
"\n",
"\n",
"合成树脂厂 测试等级情况:\n",
"体重 3.34 443\n",
"肺活量 2.87 439\n",
"握力 2.25 437\n",
"坐位体前屈 2.85 380\n",
"纵跳 1.78 420\n",
"俯卧撑 1.84 270\n",
"一分钟仰卧起坐 3.76 75\n",
"单脚站立 1.62 433\n",
"选择反应时 2.65 435\n",
"台阶指数 2.83 271\n",
"\n",
"\n",
"生产运行保障中心 测试等级情况:\n",
"体重 3.56 371\n",
"肺活量 3.03 366\n",
"握力 2.6 370\n",
"坐位体前屈 2.9 298\n",
"纵跳 1.56 343\n",
"俯卧撑 1.7 245\n",
"一分钟仰卧起坐 3.83 40\n",
"单脚站立 1.62 361\n",
"选择反应时 2.97 359\n",
"台阶指数 2.94 244\n",
"\n",
"\n",
"高科公司工会 测试等级情况:\n",
"体重 3.62 304\n",
"肺活量 3.19 301\n",
"握力 2.38 301\n",
"坐位体前屈 2.89 273\n",
"纵跳 2.11 280\n",
"俯卧撑 1.87 146\n",
"一分钟仰卧起坐 3.64 107\n",
"单脚站立 2.07 291\n",
"选择反应时 2.74 302\n",
"台阶指数 2.65 234\n",
"\n",
"\n",
"机关工会 测试等级情况:\n",
"体重 3.68 378\n",
"肺活量 3.45 375\n",
"握力 2.34 378\n",
"坐位体前屈 2.79 361\n",
"纵跳 2.48 363\n",
"俯卧撑 2.05 186\n",
"一分钟仰卧起坐 4.11 157\n",
"单脚站立 2.22 373\n",
"选择反应时 3.07 376\n",
"台阶指数 2.55 335\n",
"\n",
"\n",
"行政事务中心(离退中心)工会 测试等级情况:\n",
"体重 3.63 521\n",
"肺活量 3.2 515\n",
"握力 2.41 522\n",
"坐位体前屈 3.05 454\n",
"纵跳 2.01 497\n",
"俯卧撑 1.96 231\n",
"一分钟仰卧起坐 3.98 189\n",
"单脚站立 2.17 516\n",
"选择反应时 3.1 493\n",
"台阶指数 2.83 374\n",
"\n",
"\n",
"教育培训中心工会 测试等级情况:\n",
"体重 3.64 72\n",
"肺活量 3.48 71\n",
"握力 2.37 71\n",
"坐位体前屈 2.89 63\n",
"纵跳 2.13 68\n",
"俯卧撑 1.77 26\n",
"一分钟仰卧起坐 4.03 31\n",
"单脚站立 1.8 69\n",
"选择反应时 2.75 71\n",
"台阶指数 2.76 54\n",
"\n",
"\n",
"物装中心工会 测试等级情况:\n",
"体重 3.44 182\n",
"肺活量 3.2 179\n",
"握力 2.23 180\n",
"坐位体前屈 2.94 150\n",
"纵跳 2.04 155\n",
"俯卧撑 1.85 79\n",
"一分钟仰卧起坐 3.84 56\n",
"单脚站立 2.14 169\n",
"选择反应时 2.92 180\n",
"台阶指数 2.61 109\n",
"\n",
"\n",
"消防中心工会 测试等级情况:\n",
"体重 3.15 214\n",
"肺活量 3.36 213\n",
"握力 2.88 213\n",
"坐位体前屈 3.02 204\n",
"纵跳 2.48 203\n",
"俯卧撑 2.13 191\n",
"一分钟仰卧起坐 4.0 8\n",
"单脚站立 2.04 210\n",
"选择反应时 2.77 212\n",
"台阶指数 3.44 187\n",
"\n",
"\n"
]
}
],
"source": [
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"for bumen in depart:\n",
" print(bumen,'测试等级情况:')\n",
" for item in items:\n",
" score = 0\n",
" n = 0\n",
" for k, v in dict1.items():\n",
" if v['unit']== bumen and item in v.keys():\n",
" n = n + 1\n",
" score =score + int(v[item]['得分'])\n",
" print(item,round(score/n,2),n)\n",
" print('\\n')"
]
},
{
"cell_type": "markdown",
"id": "68094373-bb8c-4c06-b3ce-89bc17c1a5b6",
"metadata": {},
"source": [
"### 根据年龄汇总人员信息及成绩(男)"
]
},
{
"cell_type": "code",
"execution_count": 234,
"id": "7be262eb-bd7b-4cc8-bdc8-8c88521d8fc6",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-13T23:05:12.306852Z",
"iopub.status.busy": "2023-06-13T23:05:12.306384Z",
"iopub.status.idle": "2023-06-13T23:05:12.783291Z",
"shell.execute_reply": "2023-06-13T23:05:12.782317Z",
"shell.execute_reply.started": "2023-06-13T23:05:12.306820Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"热电厂工会 测试等级情况:\n",
"20~24岁平均成绩:2.25分,人数:29人\n",
"25~29岁平均成绩:2.41分,人数:14人\n",
"30~34岁平均成绩:2.27分,人数:11人\n",
"35~39岁平均成绩:2.42分,人数:24人\n",
"40~44岁平均成绩:2.43分,人数:78人\n",
"45~49岁平均成绩:2.16分,人数:125人\n",
"50~54岁平均成绩:2.36分,人数:166人\n",
"55~80岁平均成绩:2.38分,人数:117人\n",
"\n",
"\n",
"炼油厂工会 测试等级情况:\n",
"20~24岁平均成绩:2.3分,人数:51人\n",
"25~29岁平均成绩:2.43分,人数:31人\n",
"30~34岁平均成绩:2.48分,人数:39人\n",
"35~39岁平均成绩:2.38分,人数:49人\n",
"40~44岁平均成绩:2.4分,人数:187人\n",
"45~49岁平均成绩:2.44分,人数:174人\n",
"50~54岁平均成绩:2.41分,人数:140人\n",
"55~80岁平均成绩:2.31分,人数:84人\n",
"\n",
"\n",
"有机化工厂工会 测试等级情况:\n",
"20~24岁平均成绩:2.29分,人数:29人\n",
"25~29岁平均成绩:2.26分,人数:12人\n",
"30~34岁平均成绩:2.56分,人数:7人\n",
"35~39岁平均成绩:2.5分,人数:16人\n",
"40~44岁平均成绩:2.51分,人数:50人\n",
"45~49岁平均成绩:2.38分,人数:105人\n",
"50~54岁平均成绩:2.6分,人数:111人\n",
"55~80岁平均成绩:2.74分,人数:16人\n",
"\n",
"\n",
"储运厂工会 测试等级情况:\n",
"20~24岁平均成绩:2.21分,人数:27人\n",
"25~29岁平均成绩:2.33分,人数:10人\n",
"30~34岁平均成绩:2.25分,人数:12人\n",
"35~39岁平均成绩:2.43分,人数:29人\n",
"40~44岁平均成绩:2.37分,人数:125人\n",
"45~49岁平均成绩:2.26分,人数:161人\n",
"50~54岁平均成绩:2.33分,人数:252人\n",
"55~80岁平均成绩:2.27分,人数:191人\n",
"\n",
"\n",
"合成橡胶厂工会 测试等级情况:\n",
"20~24岁平均成绩:2.4分,人数:52人\n",
"25~29岁平均成绩:2.38分,人数:20人\n",
"30~34岁平均成绩:2.18分,人数:33人\n",
"35~39岁平均成绩:2.52分,人数:39人\n",
"40~44岁平均成绩:2.35分,人数:78人\n",
"45~49岁平均成绩:2.33分,人数:94人\n",
"50~54岁平均成绩:2.32分,人数:150人\n",
"55~80岁平均成绩:2.31分,人数:77人\n",
"\n",
"\n",
"检验计量中心工会 测试等级情况:\n",
"20~24岁平均成绩:2.28分,人数:11人\n",
"25~29岁平均成绩:2.23分,人数:9人\n",
"30~34岁平均成绩:2.44分,人数:6人\n",
"35~39岁平均成绩:2.52分,人数:10人\n",
"40~44岁平均成绩:2.3分,人数:34人\n",
"45~49岁平均成绩:2.46分,人数:56人\n",
"50~54岁平均成绩:2.44分,人数:128人\n",
"55~80岁平均成绩:2.52分,人数:57人\n",
"\n",
"\n",
"烯烃厂工会 测试等级情况:\n",
"20~24岁平均成绩:2.44分,人数:23人\n",
"25~29岁平均成绩:2.49分,人数:22人\n",
"30~34岁平均成绩:2.71分,人数:6人\n",
"35~39岁平均成绩:2.5分,人数:21人\n",
"40~44岁平均成绩:2.46分,人数:70人\n",
"45~49岁平均成绩:2.6分,人数:60人\n",
"50~54岁平均成绩:2.57分,人数:82人\n",
"55~80岁平均成绩:2.37分,人数:29人\n",
"\n",
"\n",
"化学品厂工会 测试等级情况:\n",
"20~24岁平均成绩:2.32分,人数:31人\n",
"25~29岁平均成绩:2.15分,人数:28人\n",
"30~34岁平均成绩:2.17分,人数:15人\n",
"35~39岁平均成绩:2.14分,人数:16人\n",
"40~44岁平均成绩:2.29分,人数:44人\n",
"45~49岁平均成绩:2.49分,人数:40人\n",
"50~54岁平均成绩:2.31分,人数:83人\n",
"55~80岁平均成绩:2.56分,人数:39人\n",
"\n",
"\n",
"合成树脂厂 测试等级情况:\n",
"20~24岁平均成绩:2.03分,人数:25人\n",
"25~29岁平均成绩:2.2分,人数:13人\n",
"30~34岁平均成绩:2.06分,人数:12人\n",
"35~39岁平均成绩:2.38分,人数:15人\n",
"40~44岁平均成绩:2.52分,人数:69人\n",
"45~49岁平均成绩:2.42分,人数:104人\n",
"50~54岁平均成绩:2.44分,人数:84人\n",
"55~80岁平均成绩:2.2分,人数:33人\n",
"\n",
"\n",
"生产运行保障中心 测试等级情况:\n",
"20~24岁平均成绩:2.5分,人数:2人\n",
"25~29岁平均成绩:2.54分,人数:3人\n",
"30~34岁平均成绩:2.35分,人数:3人\n",
"35~39岁平均成绩:2.6分,人数:9人\n",
"40~44岁平均成绩:2.7分,人数:22人\n",
"45~49岁平均成绩:2.42分,人数:40人\n",
"50~54岁平均成绩:2.47分,人数:112人\n",
"55~80岁平均成绩:2.52分,人数:132人\n",
"\n",
"\n",
"高科公司工会 测试等级情况:\n",
"20~24岁平均成绩:2.28分,人数:14人\n",
"25~29岁平均成绩:2.44分,人数:10人\n",
"30~34岁平均成绩:2.52分,人数:9人\n",
"35~39岁平均成绩:2.55分,人数:12人\n",
"40~44岁平均成绩:2.53分,人数:12人\n",
"45~49岁平均成绩:2.62分,人数:29人\n",
"50~54岁平均成绩:2.59分,人数:41人\n",
"55~80岁平均成绩:2.47分,人数:43人\n",
"\n",
"\n",
"机关工会 测试等级情况:\n",
"20~24岁平均成绩:0分,人数:0人\n",
"25~29岁平均成绩:2.36分,人数:9人\n",
"30~34岁平均成绩:2.4分,人数:14人\n",
"35~39岁平均成绩:2.59分,人数:36人\n",
"40~44岁平均成绩:2.69分,人数:31人\n",
"45~49岁平均成绩:2.64分,人数:24人\n",
"50~54岁平均成绩:2.57分,人数:48人\n",
"55~80岁平均成绩:2.76分,人数:43人\n",
"\n",
"\n",
"行政事务中心(离退中心)工会 测试等级情况:\n",
"20~24岁平均成绩:2.09分,人数:2人\n",
"25~29岁平均成绩:1.81分,人数:3人\n",
"30~34岁平均成绩:2.52分,人数:7人\n",
"35~39岁平均成绩:3.03分,人数:9人\n",
"40~44岁平均成绩:2.44分,人数:25人\n",
"45~49岁平均成绩:2.47分,人数:33人\n",
"50~54岁平均成绩:2.58分,人数:99人\n",
"55~80岁平均成绩:2.48分,人数:113人\n",
"\n",
"\n",
"教育培训中心工会 测试等级情况:\n",
"20~24岁平均成绩:2.83分,人数:2人\n",
"25~29岁平均成绩:1.86分,人数:1人\n",
"30~34岁平均成绩:2.67分,人数:1人\n",
"35~39岁平均成绩:2.11分,人数:1人\n",
"40~44岁平均成绩:2.67分,人数:2人\n",
"45~49岁平均成绩:2.1分,人数:3人\n",
"50~54岁平均成绩:2.48分,人数:9人\n",
"55~80岁平均成绩:2.32分,人数:17人\n",
"\n",
"\n",
"物装中心工会 测试等级情况:\n",
"20~24岁平均成绩:2.11分,人数:2人\n",
"25~29岁平均成绩:0分,人数:0人\n",
"30~34岁平均成绩:2.17分,人数:2人\n",
"35~39岁平均成绩:2.55分,人数:11人\n",
"40~44岁平均成绩:2.49分,人数:10人\n",
"45~49岁平均成绩:2.43分,人数:11人\n",
"50~54岁平均成绩:2.59分,人数:41人\n",
"55~80岁平均成绩:2.44分,人数:31人\n",
"\n",
"\n",
"消防中心工会 测试等级情况:\n",
"20~24岁平均成绩:2.91分,人数:12人\n",
"25~29岁平均成绩:2.81分,人数:60人\n",
"30~34岁平均成绩:2.97分,人数:33人\n",
"35~39岁平均成绩:2.97分,人数:20人\n",
"40~44岁平均成绩:2.99分,人数:7人\n",
"45~49岁平均成绩:2.72分,人数:12人\n",
"50~54岁平均成绩:2.89分,人数:13人\n",
"55~80岁平均成绩:2.49分,人数:46人\n",
"\n",
"\n"
]
}
],
"source": [
"\n",
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n",
"filename = 'data/result_燕山石化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"for bumen in depart:\n",
" print(bumen,'测试等级情况:')\n",
" \n",
" for item in nld:\n",
" di = item[0]\n",
" gao = item[1]\n",
" i = 0\n",
" score = 0\n",
" m = 0\n",
" f = 0\n",
" for k,v in dict1.items():\n",
" if v['unit']== bumen and v['age'] in range(di,gao+1) and v['sex'] == '男':\n",
" score = score+v['score']\n",
" i+=1\n",
" if i >0:\n",
" print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i}人')\n",
" else:\n",
" print(f'{di}~{gao}岁平均成绩:0分,人数:0人')\n",
" print('\\n')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "819e4421-fa5c-4b95-bcac-6d733c1eb050",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}