Files
jupyter/体测单位/天津石化.ipynb
T
2023-09-15 23:47:23 +08:00

59 KiB

第一次体测

体测人员导入

In [3]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/天津石化员工检测花名册 (20221014).xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(2, sheet.max_row+1):
    code = int(sheet.cell(n, 6).value)
    person.setdefault(code, {})
    dict1 = {}
    dict1['name'] = sheet.cell(n, 3).value
    dict1['sex'] = sheet.cell(n, 4).value
    dict1['unit'] = sheet.cell(n, 1).value
    dict1['sub_unit'] = sheet.cell(n, 2).value
    if sheet.cell(n,5).value is not None:
        dict1['id_num'] = sheet.cell(n,5).value
    person[code] = dict1
filename = 'data/天津石化人员名单.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')
ok

合并人员信息

In [9]:
import json
filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

filename = 'data/天津石化人员231113_1.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)

for k, v in dict2.items():
    if k not in dict1.keys():
        dict1.setdefault(k,{})
        dict1[k]['name'] = dict2[k]['name']
        dict1[k]['sex'] = dict2[k]['sex']
        dict1[k]['unit'] = dict2[k]['name']
        dict1[k]['sub_unit'] = dict2[k]['sub_unit']
filename = 'data/天津石化人员名单.json'
with open(filename, 'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False)
print('ok')
ok

获取人员测试成绩

In [ ]:
import json
import time
import csv

filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
#SQL语句为:
#SELECT a.item_id,a.performance,a.score,a.date AS DATE1,a.avatar_id,b.unit,b.name,a.date_joined FROM places_result AS a,_tianjin AS b WHERE a.place_id=134 AND a.avatar_id=b.id

re_ta = {}
dict1 = {}
list1 = []
#print("\n运动项目信息:")
filename = '体测单位/data/20230428_134.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        #line = re.sub('[\r\n\f ]{1,}', '', line)
        list1.append(line)
#print(list1)
for result in list1:
    user = str(result[4])
    m_item = str(result[0])    
    re_ta.setdefault(user,{})    
    re_ta[user]['name'] = str(result[6])
    re_ta[user]['unit'] = str(result[5])    
    item_name = item[m_item]['name']
    re_ta[user].setdefault(item_name,{})  
    score = int(result[1])/item[m_item]['divisor']    
    re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
    re_ta[user][item_name]['得分'] =result[2]
filename = 'data/result_天津.json'
with open(filename,'w') as fl:
    json.dump(re_ta, fl) 
print('ok')
ok

导出测试成绩

In [ ]:
import json
import openpyxl

items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
title = ['编号','姓名','性别','单位/部门','车间/科室','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
filename = 'data/result_天津.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
    
list1 = []
for k, v in dict1.items():
    list2 = []
    list2.append(str(k).rjust(8,'0'))
    list2.append(v['name'])    
    list2.append(dict2[k]['sex'])
    list2.append(dict2[k]['unit'])
    list2.append(dict2[k]['sub_unit'])
    
    for item in items:
        if item in v.keys():
            list2.append(v[item]['成绩'])
            
        elif item =='name':
            list2.append(v[item])
        else:
            list2.append('') 
            
    list1.append(list2)
filename = 'data/天津石化体测情况表(截至20221122).xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
    
wb.save(filename)

导出测试成绩(带得分)

In [11]:
import json
import openpyxl

items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
title = ['编号','姓名','性别','单位/部门','车间/科室','身高','','体重','','肺活量','','握力','','坐位体前屈','','纵跳','','俯卧撑','','一分钟仰卧起坐','','单脚站立','','选择反应时','','台阶指数']
filename = 'data/result_天津.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

del dict1['1730253']
filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
    
list1 = []
for k, v in dict1.items():    #print(k,dict2[str(k)]['name'])
    list2 = []
    list2.append(str(k).rjust(5,'0'))
    list2.append(dict2[k]['name'])    
    list2.append(dict2[k]['sex'])
    list2.append(dict2[k]['unit'])    
    list2.append(dict2[k]['sub_unit']) 
    for item in items:
        if item in dict1[k].keys():
            list2.append(dict1[k][item]['成绩'])
            list2.append(dict1[k][item]['得分'])   
        elif item =='name':
            list2.append(dict1[k][item])
        else:
            list2.append('') 
            list2.append('') 
    list1.append(list2)
filename = 'data/天津石化体测情况表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
    
wb.save(filename)
print('ok')    
ok

按照日期进行报告分类

按照体测明细分类

In [ ]:
import json
import time
import csv
import os,sys,shutil
import glob

dict1 = {}
list1 = []
filename = 'data/134_2210.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        #line = re.sub('[\r\n\f ]{1,}', '', line)
        list1.append(line)
for result in list1:
    user = str(result[4])
    dict1.setdefault(user,'2022-10-01')
    m_date = result[7]
    if m_date> dict1[user]:
        dict1[user] = m_date

m_path = 'file/134'

fls = glob.glob(f'file/new/*.pdf')
for fn in fls:
    #old = os.path.basename(fn).split('.')[0].rjust(8,'0') 
    old = os.path.basename(fn).split('.')[0]
    mrq = str(dict1[old]).split(' ')[0].replace('-', '', 2)
    if not os.path.exists(m_path + '/new/' + mrq):
        os.mkdir(m_path + '/new/' + mrq)
    n_name = f'{m_path}/new/{mrq}/{str(old).rjust(8,"0")}_{mrq}.pdf'
    if not os.path.exists(n_name):
        shutil.copyfile(fn,n_name)
print('ok!')

按照报告生成日期分类

In [ ]:
import json
import time
import csv
import os,sys,shutil
import glob

dict1 = {}
list1 = []

m_path = 'file/134'
mrq = '20221028'
if not os.path.exists(m_path + '/' + mrq):
    os.mkdir(m_path + '/' + mrq)
fls = glob.glob(f'file/new/*.pdf')
for fn in fls:
    #old = os.path.basename(fn).split('.')[0].rjust(8,'0') 
    old = os.path.basename(fn).split('.')[0]    
    n_name = f'{m_path}/{mrq}/{str(old).rjust(8,"0")}_{mrq}.pdf'
    if not os.path.exists(n_name):
        shutil.copyfile(fn,n_name)
print('ok!')

按照部门报告分组

In [ ]:
import os,sys,shutil
import json
import math
import glob
from pathlib import Path

fi_path = './file'
old = []
dict2 = {}


filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

for k, v in dict1.items():
    m_name = v['name']
    m_depart = v['unit']    
    dict2[int(k)] = [m_name,m_depart]



fls = glob.glob(f'./file/*.pdf')

for fn in fls:
    old.append(os.path.basename(fn).split('.')[0])
    #print(fn)


for n in old:    
    o_name = f'{fi_path}/{n}.pdf'
    if not os.path.exists(f'{fi_path}/new/{dict2[int(n)][1]}'):
        os.mkdir(f'{fi_path}/new/{dict2[int(n)][1]}') 
    n_name = f'{fi_path}/new/{dict2[int(n)][1]}/{str(n).rjust(5,"0")}-{dict2[int(n)][0]}.pdf'
    if not os.path.exists(n_name):
        shutil.copyfile(o_name,n_name)
        print(n_name)
In [ ]:
import os,sys,shutil
import json
import math
import glob
from pathlib import Path

fi_path = './file'
old = []
dict2 = {}


filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

for k, v in dict1.items():
    m_name = v['name']
    m_depart = v['unit']    
    dict2[int(k)] = [m_name,m_depart]



fls = glob.glob(f'./file/*.pdf')

for fn in fls:
    old.append(os.path.basename(fn).split('.')[0])

for n in old:    
    o_name = f'{fi_path}/{n}.pdf'
    new_path = Path('file/new',dict1[n]['unit'],dict1[n]['sub_unit'])
    new_path.mkdir(parents = True, exist_ok = True)
    n_name = Path(new_path,f'{str(n).rjust(7,"0")}-{dict2[int(n)][0]}.pdf')
    if not os.path.exists(n_name):
        shutil.copyfile(o_name,n_name)
        print(n_name)
    
print('ok')

统计报告人员信息表

In [ ]:
import json
import openpyxl
import os
import glob

filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
m_path ='./file'
fls = glob.glob(f'file/*.pdf')
list1 = []
for fn in fls:
    list2 = []
    code = os.path.basename(fn).split('.')[0]
    list2 = [code.rjust(7,"0"),dict1[code]['name'],dict1[code]['unit'],dict1[code]['sub_unit']]
    list1.append(list2)
title = ['编号','姓名','单位/部门','车间/科室',]    
filename = 'data/天津石化体测情况表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
    
wb.save(filename)

PDF文件压缩

In [ ]:
import fitz
from pdf2image import convert_from_path, convert_from_bytes
import os,sys
import tempfile
from pdf2image.exceptions import (
    PDFInfoNotInstalledError,
    PDFPageCountError,
    PDFSyntaxError
)
import img2pdf  
import glob
import shutil

def covert2pic(old_fn):
    if os.path.exists('.pdf'):       # 临时文件,需为空
         shutil.rmtree('.pdf')
    os.mkdir('.pdf')
    with tempfile.TemporaryDirectory() as path:
        images_from_path = convert_from_path(old_fn, dpi=100,fmt='jpg', output_folder='.pdf')

def pic2pdf(new_fn):
    fl1=glob.glob('.pdf/*.jpg')
    fl1.sort()
    a4inpt = (img2pdf.mm_to_pt(210),img2pdf.mm_to_pt(297))
    layout_fun = img2pdf.get_layout_fun(a4inpt)
    with open(new_fn,"wb") as f:
        f.write(img2pdf.convert(fl1,layout_fun=layout_fun))
    print(f'{new_fn}转换成功!')
    


def pdfz(sor, obj, zoom):    
    covert2pic(zoom)
    pic2pdf(obj)
    
fi_path = 'file/134/20221122/'
fl = glob.glob(f'{fi_path}*.pdf')

for fn in fl:
    new_fn = fi_path+'new/'+os.path.basename(fn)
    covert2pic(fn)
    pic2pdf(new_fn)
    shutil.rmtree('.pdf')
print('ok!')

统计未测试人员名单

In [ ]:
import json
import openpyxl

title = ['编号','姓名','性别','单位/部门','车间/科室']
filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
filename = 'data/result_天津.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)

list1 = []
for k, v in dict1.items():
    list2 = []
    if k not in dict2.keys():        
        list2 = [k,dict1[k]['name'],dict1[k]['sex'],dict1[k]['unit'],dict1[k]['sub_unit'],] 
        list1.append(list2)
filename = 'data/天津石化未参加体测人数统计表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
    
wb.save(filename)
print('ok!')

区分新文件

In [ ]:
import os,sys,shutil
import glob
import time

fi_path = 'file/'
fls = glob.glob(f'{fi_path}*.pdf')
m_date = time.strptime('2022-10-28','%Y-%m-%d')
for fn in fls:
    c_time = time.gmtime(os.path.getctime(fn))
    if c_time > m_date:
        n_name = f'{fi_path}new/{os.path.basename(fn)}'
        if not os.path.exists(n_name):
            shutil.copyfile(fn,n_name)
        print(n_name)
In [ ]:
import json
import openpyxl

title = ['编号','姓名','性别','单位/部门','车间/科室']
filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
filename = 'data/result_天津.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
print(len(dict2),len(dict1),)

心理测试情况统计

In [ ]:
import json
import openpyxl

title = ['编号','姓名','性别','单位/部门','车间/科室']
filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
filename = 'data/134_xinli.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        #line = re.sub('[\r\n\f ]{1,}', '', line)
        list1.append(line[4])
list3 = []
for k, v in dict1.items():
    list2 = []
    if k not in list1:        
        list2 = [k,dict1[k]['name'],dict1[k]['sex'],dict1[k]['unit'],dict1[k]['sub_unit'],] 
        list3.append(list2)
filename = 'data/天津石化未参加心理测试人数统计表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list3:
    sheet.append(row)
    
wb.save(filename)
print('ok!')
In [ ]:
import json
import openpyxl

title = ['编号','姓名','性别','单位/部门','车间/科室']
filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
filename = 'data/134_xinli.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        print(line[4])

体检报告统计分析

excel数据导入

In [ ]:
import openpyxl
import json
import re

wb = openpyxl.load_workbook('data/体检结果(模板)化工.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
dict1 = {}

for n in range(11, sheet.max_row+1):
    code = sheet.cell(n, 1).value
    name = sheet.cell(n, 8).value
    txt = sheet[f'DT{str(n)}'].value 
    txt = re.sub(r'\n', "", txt)
    txt = re.sub(r'\t', "", txt)
    txt = re.sub(r'二、尊敬的顾客您好,您本次体检的建议信息如下:', "", txt)
    ss = r'三、温馨提示: 鉴于医学技术发展的局限性,个体间可能存在的生物差异性以及您选择的检查项目的局限性,任何一次医学检查的手段和方法都不具备绝对的特异性和灵敏度,对于疾病筛检仍有其盲点,因此,我们建议您对本次检查的异常结果进行随诊复查和其他相关检查,以获得更可靠的医学证据建立准确地医学判断。'
    txt1 = re.sub(r'三、温馨提示.*', "", txt,re.S)
    dict1.setdefault(code, {})
    dict1[code]['name'] = name
    dict1[code]['xb'] = sheet.cell(n, 9).value
    #dict1[code]['birth'] = sheet.cell(n, 10).value
    dict1[code]['report'] = txt1
filename = 'data/体检结果.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False) 
print('ok')

体检结果分解

In [ ]:
import openpyxl
import json
import re

mo1 = r'[0-9]、'
mo2 = '【.*】'
filename = 'data/体检结果.json'
list3 = []
with open(filename,'r') as fl:
    dict1 = json.load(fl)
for k, v in dict1.items():
    
    ss = v['report']
    list1 = re.split(mo1,ss)
    if len(list1) ==1:
        continue
    else:
        list1.remove('')
        #print(list1)
        for item in list1:
            list2 = re.search( mo2, item)
            xm =list2.group()
            
            txt = item.replace(xm,'').strip()
            list3.append([k,v['name'],v['xb'],xm,txt])
filename = 'data/症状表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active

for row in list3:
    sheet.append(row)
    
wb.save(filename)
print('ok!')

天津人员制卡

In [25]:
import binascii
import openpyxl
gbs = 'C2EDC1A2D1C7'
bs = binascii.a2b_hex(gbs)
#print('bs', bs)
#print('decode-bs:', bs.decode('gb2312'))

s = '马立亚'
gbcode = s.encode('gb2312') # 先转成 bytes格式
#print('gbcode:', gbcode)
gbs = "".join([hex(ch)[2:] for ch in gbcode])  #
#print('gbs:', gbs)

wb = openpyxl.load_workbook('data/联合六车间体质测定人员名单.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}
list1 = []
for n in range(3, sheet.max_row+1):
    name = sheet.cell(n, 3).value
    code = sheet.cell(n, 2).value
    gbcode = code.encode('gbk')
    code = "".join([hex(ch)[2:] for ch in gbcode])
    gbcode = name.encode('gbk')
    name = "".join([hex(ch)[2:] for ch in gbcode])
    #for s in code:
    #    print(ord(s))
    
    list1.append([sheet.cell(n, 1).value,sheet.cell(n, 2).value,sheet.cell(n, 3).value,code.ljust(32,'0'),name.ljust(32,'0')])
    print(code.ljust(32,'0'),name.ljust(32,'0'))

filename = 'data/联合六车间体质测定人员制卡名单.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active

for row in list1:
    sheet.append(row)
    
wb.save(filename)
print('ok!')
30313733323138300000000000000000 b3c2c7bf000000000000000000000000
30313733303831310000000000000000 baabc5f4000000000000000000000000
30313733323637350000000000000000 bcd6b3c9c1fa00000000000000000000
30313733303638380000000000000000 bfdcc8d9cca900000000000000000000
30313733313236370000000000000000 c0eeb574000000000000000000000000
30313733313237380000000000000000 c1f5b8d5000000000000000000000000
30313733303737390000000000000000 d2a6b2a8000000000000000000000000
30313733313737390000000000000000 d5c5b7c9000000000000000000000000
30313733323139350000000000000000 d0cfc1acb6b000000000000000000000
30313733313234380000000000000000 cdf5b1fed2e500000000000000000000
30313733313237310000000000000000 cdf5bda8e8b000000000000000000000
30333134353532350000000000000000 c0eecfe8000000000000000000000000
30313733303832330000000000000000 c9dbcfa3c7bf00000000000000000000
30313733313836390000000000000000 c1f5beea000000000000000000000000
30333137323831350000000000000000 d5c5d3f1d0c200000000000000000000
30313733313235360000000000000000 c0eeb1f3000000000000000000000000
30313733313235370000000000000000 b8dfbda8ceb000000000000000000000
30313733303835320000000000000000 ccc6bbe1d6be00000000000000000000
30333336323135310000000000000000 c1f5bdf0ceb000000000000000000000
30313733313938320000000000000000 b8dfbda8c0a400000000000000000000
30313733313236350000000000000000 d5c5ab7c000000000000000000000000
30333339313137300000000000000000 cdf5cfb2c1fa00000000000000000000
30313733313837360000000000000000 cdf5c7bf000000000000000000000000
30313733313933340000000000000000 c4feceb0000000000000000000000000
30313733303836350000000000000000 c1f5bae9befc00000000000000000000
30313733313235310000000000000000 b9f9b3c9d6c700000000000000000000
30313733313935340000000000000000 c2edbbdbbefd00000000000000000000
30313733303834390000000000000000 c1f5c7ecd1d200000000000000000000
30313733313935350000000000000000 c3cfb4ba000000000000000000000000
30313733313930380000000000000000 d0cfd5f1b5c200000000000000000000
30313733393733390000000000000000 d5c5c8f3ccef00000000000000000000
30333339313134330000000000000000 c1f5ccedd6c700000000000000000000
30313733313237360000000000000000 c1f5bda1000000000000000000000000
30313733303836320000000000000000 cee2b9f3c3f100000000000000000000
30313733313831360000000000000000 b2dcbaa3b7e500000000000000000000
30313733313836360000000000000000 c0eeb8a3cdfa00000000000000000000
30313733313236390000000000000000 b2ccc1a2d0c200000000000000000000
30313733303835360000000000000000 bafab3a4c1ac00000000000000000000
30313733303834380000000000000000 c1f5bdf0bbaa00000000000000000000
30313733303833320000000000000000 d5d4d6bec3f100000000000000000000
30313733313939340000000000000000 d0bbbcd1000000000000000000000000
30313733313833350000000000000000 d3dad1e0000000000000000000000000
30313733323637380000000000000000 b8dfbea7000000000000000000000000
30333434303630390000000000000000 c2acbaecc1c100000000000000000000
30333436383237350000000000000000 d5c5b2a9d3ee00000000000000000000
30333436383335360000000000000000 d6a3b1bec3f700000000000000000000
30333436383334310000000000000000 c4c2b1a6c3c000000000000000000000
30333436383335350000000000000000 d5d4d4bd000000000000000000000000
30333436383334360000000000000000 d4acc0da000000000000000000000000
30333436383335340000000000000000 d5d4d3f1bde000000000000000000000
30333436383332370000000000000000 cdf5d3bed5e900000000000000000000
30333436383234380000000000000000 b6a1d2bb000000000000000000000000
30333436383235310000000000000000 baced3a6bfed00000000000000000000
30333436383331350000000000000000 d1eec8e3e6cc00000000000000000000
30333433363834360000000000000000 cee2bae1000000000000000000000000
30333439393435310000000000000000 c1f5c5e0b1f500000000000000000000
30333439393430300000000000000000 b7bfbaead3ee00000000000000000000
30333439393336370000000000000000 b8dfbac6bae300000000000000000000
30333439393437350000000000000000 c1f5cdae000000000000000000000000
30333439393432300000000000000000 c7d8d1a7c9ad00000000000000000000
30333439393334390000000000000000 c9eab3ac000000000000000000000000
30333439393433340000000000000000 b9f9d4aac9fa00000000000000000000
30333439393335300000000000000000 c5d3bcd1c0d600000000000000000000
30333439393339340000000000000000 cbd5ccda000000000000000000000000
30333439393336390000000000000000 c0eeb0c2000000000000000000000000
30333530353732340000000000000000 d1eebdf0c5f300000000000000000000
30333530353735300000000000000000 b7b6d6bed2e300000000000000000000
30333530353733310000000000000000 c0eed4f3b3bf00000000000000000000
30333530353731360000000000000000 b3c2bcd1e2f900000000000000000000
30333332313739300000000000000000 bfb5b7b2000000000000000000000000
ok!

因素分析

清除修改测试项目

In [ ]:
import json
import openpyxl


filename = 'data/天津石化人员231113.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
code = '1734094'
items = ['身高','体重']
for item in items:
    del dict1[code][item]
with open(filename, 'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False)
print('ok')

人员情况导入

In [ ]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/员工个人基础信息20230113.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(4, sheet.max_row+1):
    code = int(sheet.cell(n, 1).value)
    person.setdefault(code, {})
    dict1 = {}
    dict1['name'] = sheet.cell(n, 2).value
    dict1['sex'] = sheet.cell(n, 3).value
    dict1['unit'] = sheet.cell(n, 6).value
    dict1['sub_unit'] = sheet.cell(n, 7).value
    if sheet.cell(n,10).value is not None:
        dict1['daoban'] = '是'
    else:
        dict1['daoban'] = '否'
    dict1['age'] = sheet.cell(n, 13).value
    dict1['gl'] = sheet.cell(n, 14).value
    dict1['jhgl'] = sheet.cell(n, 15).value                         
    person[code] = dict1
filename = 'data/天津石化人员231113.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')

人员体测得分导入合并

In [ ]:
import json
import openpyxl

items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']

filename = 'data/result_天津.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

filename = 'data/天津石化人员231113.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
for k, v in dict2.items():
    if k in dict1.keys():
        for item in dict1[k].keys():
            dict2[k][item] = dict1[k][item]
filename = 'data/天津石化人员231113.json'
with open(filename, 'w') as fl:
    json.dump(dict2, fl, ensure_ascii=False)
print('ok')
            

筛选体测人员,计算得分

In [ ]:
import json

items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']

filename = 'data/result_天津.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

filename = 'data/天津石化人员231113.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
dict3 = {}
for k, v in dict2.items():
    if k in dict1.keys():
        dict3[k] = dict2[k]
        i = 0
        score =0
        for item in dict2[k].keys():            
            if item in items:
                score = score + int(dict2[k][item]['得分'])
                i+=1
        dict3[k]['score'] = score
        dict3[k]['item_num'] = i
        dict3[k]['avg'] = round(score/i,2)
filename = 'data/天津石化线上测试结果.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
for k, v in dict2.items():
    if k in dict1.keys():
        dict3[k] = dict2[k]
        dict3[k]['zhongyi'] = dict1[k]['中医体质']
        
filename = 'data/天津石化人员231113_1.json'
with open(filename, 'w') as fl:
    json.dump(dict3, fl, ensure_ascii=False)
print('ok')

因素分析

倒班因素分析

In [ ]:
import json
import openpyxl

filename = 'data/天津石化人员231113_1.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
unit = set()

for k, v in dict1.items():
    unit.add(dict1[k]['unit'])
#print(unit)
dict2 = {}
for k, v in dict1.items():
    dict2.setdefault(v['unit'],{})
    dict2[v['unit']].setdefault('是',{})
    dict2[v['unit']].setdefault('否',{})
    dict2[v['unit']]['是'].setdefault('num',0)
    dict2[v['unit']]['否'].setdefault('num',0)
    dict2[v['unit']]['是'].setdefault('score',0)
    dict2[v['unit']]['否'].setdefault('score',0)
    dict2[v['unit']]['是'].setdefault('zhongyi',0)
    dict2[v['unit']]['否'].setdefault('zhongyi',0) 
    dict2[v['unit']]['是'].setdefault('pianpo',0)
    dict2[v['unit']]['否'].setdefault('pianpo',0) 
    if 'avg' in v.keys():
        dict2[v['unit']][v['daoban']]['num'] = dict2[v['unit']][v['daoban']]['num'] + 1
        dict2[v['unit']][v['daoban']]['score'] = dict2[v['unit']][v['daoban']]['score'] + v['avg']
    if 'zhongyi' in v.keys() :
        dict2[v['unit']][v['daoban']]['zhongyi'] = dict2[v['unit']][v['daoban']]['zhongyi'] + 1
    if 'zhongyi' in v.keys()  and v['zhongyi']!='平和':
        dict2[v['unit']][v['daoban']]['pianpo'] = dict2[v['unit']][v['daoban']]['pianpo'] + 1
        
    
for k, v in dict2.items():    
    if v['是']['num'] > 0:
        dict2[k]['是']['avg'] = round(v['是']['score']/v['是']['num'],2)
    else:
        dict2[k]['是']['avg'] = 0
    if v['否']['num'] > 0:
        dict2[k]['否']['avg'] = round(v['否']['score']/v['否']['num'],2)
    else:
        dict2[k]['否']['avg'] = 0
list1 = []        
for k, v in dict2.items():
    list2 = []
    unit = k
    for k1, v1 in v.items():
        daoban = k1
        num = v1['num']
        avg = v1['avg']
        zhongyi = v1['zhongyi']
        pianpo = v1['pianpo']
        list2 = [k,daoban,num,avg,zhongyi,pianpo]
        list1.append(list2)
    
filename = 'data/天津倒班因素分析表.xlsx'    
wb = openpyxl.Workbook()
sheet = wb.active

for row in list1:
    sheet.append(row)
    
wb.save(filename)
print('ok!')

工龄因素分析

In [183]:
import json
import openpyxl

filename = 'data/天津石化人员231113_1.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
unit = set()

for k, v in dict1.items():
    unit.add(dict1[k]['unit'])
#print(unit)
dict2 = {}
for k, v in dict1.items():
    gld = int(int(v['gl'])/10)
    dict2.setdefault(gld,{})
    dict2[gld].setdefault(v['sex'],{})
    dict2[gld][v['sex']].setdefault('num',0)
    dict2[gld][v['sex']].setdefault('score',0)
    dict2[gld][v['sex']].setdefault('zhongyi',0)
    dict2[gld][v['sex']].setdefault('pianpo',0) 
    if 'avg' in v.keys():
        dict2[gld][v['sex']]['num'] = dict2[gld][v['sex']]['num'] + 1
        dict2[gld][v['sex']]['score'] = dict2[gld][v['sex']]['score'] + v['avg']
    if 'zhongyi' in v.keys() :
        dict2[gld][v['sex']]['zhongyi'] = dict2[gld][v['sex']]['zhongyi'] + 1
    if 'zhongyi' in v.keys()  and v['zhongyi']!='平和':
        dict2[gld][v['sex']]['pianpo'] = dict2[gld][v['sex']]['pianpo'] + 1
nl = {}
nl[0] = '工龄0-9年'
nl[1] = '工龄10-19年'
nl[2] = '工龄20-29年'
nl[3] = '工龄30-39年'
nl[4] = '工龄40-49年'
nl[5] = '工龄50年以上'
list1 = []        
for k, v in nl.items():
    list2 = []
    gld = v
    for k1, v1 in dict2[k].items():
        num = v1['num']
        score = v1['score']
        zhongyi = v1['zhongyi']
        pianpo = v1['pianpo']
        list2 = [k,daoban,num,avg,zhongyi,pianpo]
        list1.append(list2)
{2: {'男': {'num': 700, 'score': 1913.639999999998, 'zhongyi': 91, 'pianpo': 73}, '女': {'num': 550, 'score': 1736.5499999999988, 'zhongyi': 47, 'pianpo': 43}}, 1: {'男': {'num': 465, 'score': 1291.3899999999994, 'zhongyi': 153, 'pianpo': 119}, '女': {'num': 265, 'score': 846.3700000000005, 'zhongyi': 47, 'pianpo': 45}}, 3: {'男': {'num': 1161, 'score': 3063.0399999999995, 'zhongyi': 144, 'pianpo': 109}, '女': {'num': 279, 'score': 865.81, 'zhongyi': 39, 'pianpo': 34}}, 4: {'男': {'num': 163, 'score': 406.15000000000003, 'zhongyi': 23, 'pianpo': 19}}, 0: {'女': {'num': 405, 'score': 1218.0100000000002, 'zhongyi': 40, 'pianpo': 27}, '男': {'num': 737, 'score': 1971.2600000000007, 'zhongyi': 87, 'pianpo': 44}}, 5: {'男': {'num': 1, 'score': 2.57, 'zhongyi': 0, 'pianpo': 0}}}
In [188]:
import json
import openpyxl

filename = 'data/天津石化人员231113_1.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
unit = set()

for k, v in dict1.items():
    unit.add(dict1[k]['unit'])
#print(unit)
dict2 = {}
for k, v in dict1.items():
    gld = int(int(v['gl'])/10)
    dict2.setdefault(gld,{})    
    dict2[gld].setdefault('num',0)
    dict2[gld].setdefault('score',0)
    dict2[gld].setdefault('zhongyi',0)
    dict2[gld].setdefault('pianpo',0) 
    if 'avg' in v.keys():
        dict2[gld]['num'] = dict2[gld]['num'] + 1
        dict2[gld]['score'] = dict2[gld]['score'] + v['avg']
    if 'zhongyi' in v.keys() :
        dict2[gld]['zhongyi'] = dict2[gld]['zhongyi'] + 1
    if 'zhongyi' in v.keys()  and v['zhongyi']!='平和':
        dict2[gld]['pianpo'] = dict2[gld]['pianpo'] + 1
print(dict2)
nl = {}
nl[0] = '工龄0-9年'
nl[1] = '工龄10-19年'
nl[2] = '工龄20-29年'
nl[3] = '工龄30-39年'
nl[4] = '工龄40-49年'
nl[5] = '工龄50年以上'
list1 = []        
for k, v in nl.items():
    list2 = []
    gld = v
    
    num = dict2[k]['num']
    score = dict2[k]['score']
    if num > 0:
        avg = round(score/num,2)
    else:
        avg = 0
    zhongyi = dict2[k]['zhongyi']
    pianpo = dict2[k]['pianpo']
    list2 = [gld,num,avg,zhongyi,pianpo]
    list1.append(list2)
filename = 'data/天津倒班因素分析表(工龄).xlsx'    
wb = openpyxl.Workbook()
sheet = wb.active

for row in list1:
    sheet.append(row)
    
wb.save(filename)
print('ok!')
{2: {'num': 1250, 'score': 3650.189999999998, 'zhongyi': 138, 'pianpo': 116}, 1: {'num': 730, 'score': 2137.7599999999993, 'zhongyi': 200, 'pianpo': 164}, 3: {'num': 1440, 'score': 3928.850000000005, 'zhongyi': 183, 'pianpo': 143}, 4: {'num': 163, 'score': 406.15000000000003, 'zhongyi': 23, 'pianpo': 19}, 0: {'num': 1142, 'score': 3189.270000000001, 'zhongyi': 127, 'pianpo': 71}, 5: {'num': 1, 'score': 2.57, 'zhongyi': 0, 'pianpo': 0}}
ok!

年龄因素分析

In [192]:
import json
import openpyxl

filename = 'data/天津石化人员231113_1.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
unit = set()

for k, v in dict1.items():
    unit.add(dict1[k]['unit'])
#print(unit)
dict2 = {}
for k, v in dict1.items():
    gld = int(int(v['age'])/10)
    dict2.setdefault(gld,{})    
    dict2[gld].setdefault('num',0)
    dict2[gld].setdefault('score',0)
    dict2[gld].setdefault('zhongyi',0)
    dict2[gld].setdefault('pianpo',0) 
    if 'avg' in v.keys():
        dict2[gld]['num'] = dict2[gld]['num'] + 1
        dict2[gld]['score'] = dict2[gld]['score'] + v['avg']
    if 'zhongyi' in v.keys() :
        dict2[gld]['zhongyi'] = dict2[gld]['zhongyi'] + 1
    if 'zhongyi' in v.keys()  and v['zhongyi']!='平和':
        dict2[gld]['pianpo'] = dict2[gld]['pianpo'] + 1
nl = {}

nl[2] = '20-29岁'
nl[3] = '30-39岁'
nl[4] = '40-49岁'
nl[5] = '50-59岁'
nl[6] = '60岁及以上'
list1 = []        
for k, v in nl.items():
    list2 = []
    gld = v
    
    num = dict2[k]['num']
    score = dict2[k]['score']
    if num > 0:
        avg = round(score/num,2)
    else:
        avg = 0
    zhongyi = dict2[k]['zhongyi']
    pianpo = dict2[k]['pianpo']
    list2 = [gld,num,avg,zhongyi,pianpo]
    list1.append(list2)
filename = 'data/天津倒班因素分析表(年龄).xlsx'    
wb = openpyxl.Workbook()
sheet = wb.active

for row in list1:
    sheet.append(row)
    
wb.save(filename)
print('ok!')
ok!

倒班时间因素分析

In [4]:
import json
import openpyxl

filename = 'data/天津石化人员231113_1.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
unit = set()

for k, v in dict1.items():
    unit.add(dict1[k]['unit'])
#print(unit)
dict2 = {}
for k, v in dict1.items():
    if v['daoban'] == '是':
        
        gld = int(int(v['gl'])/10)
        dict2.setdefault(gld,{})    
        dict2[gld].setdefault('num',0)
        dict2[gld].setdefault('score',0)
        dict2[gld].setdefault('zhongyi',0)
        dict2[gld].setdefault('pianpo',0) 
        if 'avg' in v.keys():
            dict2[gld]['num'] = dict2[gld]['num'] + 1
            dict2[gld]['score'] = dict2[gld]['score'] + v['avg']
        if 'zhongyi' in v.keys() :
            dict2[gld]['zhongyi'] = dict2[gld]['zhongyi'] + 1
        if 'zhongyi' in v.keys()  and v['zhongyi']!='平和':
            dict2[gld]['pianpo'] = dict2[gld]['pianpo'] + 1
print(dict2)
nl = {}
nl[0] = '倒班工龄0-9年'
nl[1] = '倒班工龄10-19年'
nl[2] = '倒班工龄20-29年'
nl[3] = '倒班工龄30-39年'
nl[4] = '倒班工龄40-49年'
list1 = []        
for k, v in nl.items():
    list2 = []
    gld = v
    
    num = dict2[k]['num']
    score = dict2[k]['score']
    if num > 0:
        avg = round(score/num,2)
    else:
        avg = 0
    zhongyi = dict2[k]['zhongyi']
    pianpo = dict2[k]['pianpo']
    list2 = [gld,num,avg,zhongyi,pianpo]
    list1.append(list2)
filename = 'data/天津倒班因素分析表(倒班工龄).xlsx'    
wb = openpyxl.Workbook()
sheet = wb.active

for row in list1:
    sheet.append(row)
    
wb.save(filename)
print('ok!')
{2: {'num': 571, 'score': 1619.279999999999, 'zhongyi': 55, 'pianpo': 44}, 3: {'num': 665, 'score': 1730.73, 'zhongyi': 76, 'pianpo': 62}, 1: {'num': 129, 'score': 358.9600000000001, 'zhongyi': 23, 'pianpo': 19}, 0: {'num': 706, 'score': 1963.300000000001, 'zhongyi': 70, 'pianpo': 32}, 4: {'num': 81, 'score': 194.23999999999992, 'zhongyi': 17, 'pianpo': 14}}
ok!

第二次体测

体测人员导入

In [4]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/天津石化员工检测花名册(20230915).xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(2, sheet.max_row+1):
    code = int(sheet.cell(n, 1).value)
    person.setdefault(code, {})
    dict1 = {}
    dict1['name'] = sheet.cell(n, 2).value
    dict1['sex'] = sheet.cell(n, 3).value
    dict1['unit'] = sheet.cell(n, 5).value
    dict1['sub_unit'] = sheet.cell(n, 6).value
    dict1['birth'] = sheet.cell(n,4).value
    person[code] = dict1
filename = 'data/天津石化人员名单2023.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')
ok

生产读卡系统文件

In [5]:
import json

filename = 'data/天津石化人员名单2023.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
for k, v in dict1.items():
    dict2 = {}
    #if dict1['sex'] =='男':
    #    sex = 1
    
    dict2 = {'id':k,'name':v['name'],'gender':v['sex'],'birth':v['birth'],'unit':v['unit']}
    list1.append(dict2)
json_data = json.dumps(list1,ensure_ascii=False, indent=4)  

# 将 json 数据写入文件
with open("data/data1.json", "w",encoding = 'utf-8') as file:
    file.write(json_data)   
print('ok')
ok
In [ ]: