Files
jupyter/体测单位/长炼医院.ipynb
T
2024-12-11 18:57:54 +08:00

94 KiB

员工体测

导入人员信息

In [ ]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/student_20140922长炼医院监测花名册.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(2, sheet.max_row+1):
    if sheet.cell(n,1).value is not None:
        code = int(sheet.cell(n, 4).value)
        person.setdefault(code, {})
        dict1 = {}
        dict1['name'] = sheet.cell(n, 6).value
        if int(sheet.cell(n, 7).value) ==1:
            sex = '男'
        else:
            sex = '女'
        dict1['sex'] = sex
        birth = str(sheet.cell(n, 8).value).split()[0]
        dict1['birth'] = birth
        dict1['unit'] = sheet.cell(n, 3).value
        person[code] = dict1
filename = 'data/长炼医院人员2024.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')

新增人员信息

In [ ]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/长炼医院新增监测花名册(水务部).xlsx')
sheet = wb.active
# sheets = wb.sheetnames
filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    person = json.load(fl) 
print(len(person))
for n in range(2, sheet.max_row+1):
    if sheet.cell(n,1).value is not None:
        code = int(sheet.cell(n, 4).value)
        person.setdefault(code, {})
        dict1 = {}
        dict1['name'] = sheet.cell(n, 6).value
        if int(sheet.cell(n, 7).value) ==1:
            sex = '男'
        else:
            sex = '女'
        dict1['sex'] = sex
        birth = str(sheet.cell(n, 8).value).split()[0]
        dict1['birth'] = birth
        dict1['unit'] = sheet.cell(n, 3).value
        person[code] = dict1
filename = 'data/长炼医院人员名单.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')
print(len(person))

补充员工编号

In [ ]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/长炼医院体测人员编号情况表.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    person = json.load(fl) 
print(len(person))
for n in range(2, sheet.max_row+1):
    if sheet.cell(n,1).value is not None:
        code = str(sheet.cell(n, 1).value)
        ygbh = str(sheet.cell(n, 6).value)
        if code in person.keys():
            person[code]['code'] = ygbh
            #print(code,person[code]['name'],ygbh)
filename = 'data/长炼医院人员名单.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')

单独新增人员信息

In [ ]:
import openpyxl
import json


filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    person = json.load(fl) 
code = '3297'
name = '何治国'
sex = '男'
birth = '1982/02/15'
unit = '长炼医院外二科'
person[code] = {'name':name,'sex':sex,'birth':birth,'unit':unit}
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')
print(len(person))

每日成绩导入

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
re_ta = {}
dict1 = {}
list1 = []
filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
rq = '20230830'
filename = f'data/places_result_{rq}.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[2])
    if user in dict1.keys():        
        m_item = str(result[3])    
        re_ta.setdefault(user,{})    
        re_ta[user]['name'] = dict1[user]['name']
        re_ta[user]['sex'] = dict1[user]['sex'] 
        re_ta[user]['unit'] = dict1[user]['unit']
        item_name = item[m_item]['name']
        re_ta[user].setdefault(item_name,{})  
        score = int(result[4])/item[m_item]['divisor']    
        re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))

filename = 'data/result_长炼医院.json'
with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))
In [ ]:
import json
import datetime
import csv
from datetime import date

filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'


re_ta = {}
dict1 = {}
list1 = []
filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 

filename = 'data/places_result_20231202.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)
#f_item = ['lung','grip','flexion','jump','balance','reaction','step','situp']
#m_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step']
for result in list1:
    user = str(result[2])
    item_id = int(result[3])
    performance = int(result[4])
    if user in dict1.keys() and (item_id!=3 and performance>0):
        l_xm = []
        m_item = str(result[3])    
        re_ta.setdefault(user,{})    
        re_ta[user]['name'] = dict1[user]['name']
        re_ta[user]['sex'] = dict1[user]['sex']
        if dict1[user]['sex'] == '男':
            l_xm = ['weight','height','lung','grip','flexion','jump','pushup','balance','reaction','step']
        else:
            l_xm = ['weight','height','lung','grip','flexion','jump','balance','reaction','step','situp']
        re_ta[user]['unit'] = dict1[user]['unit']
        birth = date.fromisoformat(dict1[user]['birth'].replace('/','-'))
        #nian = int(birth[0].strip())
        #yue = int(birth[1].strip())
        #ri = int(birth[2].strip())
        #print(k,nian,yue,ri)
        item_name = item[m_item]['en']        
        if item_name in l_xm:            
            days = (datetime.date(2023, 8, 29)-birth).days        
            re_ta[user]['age'] = int(days/365)
            re_ta[user]['month'] = int(days/365*12)


            re_ta[user].setdefault(item_name,{})  
            score = int(result[4])/item[m_item]['divisor']    
            re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))
filename = 'data/result_长炼医院.json'

with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))

每日成绩导出

In [ ]:
import json
import openpyxl

#rq = '20230510'
items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
title = ['编号','姓名','性别','单位','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
filename = f'data/result_长炼医院({rq}).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(5,'0'))
    list2.append(v['name'])    
    list2.append(dict2[k]['sex'])
    list2.append(dict2[k]['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 = f'data/长炼医院体测情况表({rq}).xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
wb.save(filename)

人员信息表导出

In [ ]:
import openpyxl
import json


filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
for k, v in dict1.items():
    list2 = []
    list2 = [k,v['name'],v['sex'],v['birth'],v['unit']]
    list1.append(list2)
filename = f'data/长炼医院体测情况表(20230829).xlsx'
wb = openpyxl.Workbook()
sheet = wb.active

for row in list1:
    sheet.append(row)
wb.save(filename)

计算测试得分

In [ ]:
import json
import time

filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict3 = json.load(fl) 
for k,v in dict3.items():
    item[k] = v
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'

filename = 'data/体质检测标准 (1).json'    
with open(filename,'r') as fl:
    dict1 = json.load(fl)



def cal_score(data1):
    #data = {'name':'张三','sex':'M','age':37,'item':'StepExperiment','result':46}     
    person = dict1['person']
    criteria = dict1['criteria']    
    info = data1['sex']+str(data1['age'])
    bz = person[info]
    mx = criteria[bz][data1['item']]
    result = data1['result']    
    if data1['item'] == 'reaction':
        for bz1 in mx:
            if result > bz1:
                #print(bz1)
                score = mx.index(bz1,0)
                break
            else:
                score = 5
    else:
        for bz1 in mx:
            if result < bz1:
                #print(bz1)
                score = mx.index(bz1,0)
                break
            else:
                score = 5
    return(score)
filename = 'data/体质检测标准_BMI.json'
with open(filename,'r') as fl:
    dict4 = json.load(fl) 
    
def cal_bmi(data1):
   # data = {'name':'张三','sex':'M','age':37,'item':'HeightWeight','result':'177.7,97.0'}
    person = dict4['person']
    criteria = dict4['criteria']
    
    info = data1['sex']+str(data1['age'])
    bz = person[info]
    #print(bz)
    result = data1['result']
    print(result)
    height = int(float(result.split(',')[0]))
    weight = float(result.split(',')[1])
    mx = criteria[bz][str(height)]
    if weight < mx[0]:
        score = 1
    elif weight < mx[1]:
        score = 3
    elif weight < mx[2]:
        score = 5    
    elif weight <= mx[3]:
        score = 3  
    elif weight > mx[3]:
        score = 1
    return score
    
    

#list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','height','weight']
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp']
filename = 'data/result_长炼医院.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
for k, v in dict2.items():
    if v['sex'] == '男':
        sex = 'M'
    else:
        sex = 'F'            
    if 'height' in v.keys() and 'weight' in v.keys():
        bmi_data = v['height']['成绩'].split()[0]+','+ v['weight']['成绩'].split()[0]
        data1 = {'sex':sex,'age':v['age'],'item':'HeightWeight','result':bmi_data}
        dict2[k]['bmi'] = {}
        dict2[k]['bmi']['成绩'] = bmi_data
        dict2[k]['bmi']['score'] = cal_bmi(data1)
    for item_en in list_item:
        if item_en in v.keys():            
            data1 = {'sex':sex,'age':v['age'],'item':item_en,'result':float(v[item_en]['成绩'].split()[0])}
            dict2[k][item_en]['score'] = cal_score(data1)
            #print(k,v[item_en]['成绩'],cal_score(data1))

filename = f'data/result_长炼医院.json'
with open(filename,'w') as fl:
    json.dump(dict2,fl , ensure_ascii=False) 
print('ok!')        

生成报告

In [ ]:
import requests
import json

headers = {
    "Content-Type": "application/json; charset=UTF-8"
    }
filename = 'data/result_长炼医院.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
fiie_path ='./469849/'
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']
for  k, v in dict1.items():
    list1 = []
    mydata = {}
    
    id = str(k).rjust(5,"0")
    mydata['path'] = fiie_path+id+'-'+ v['name']+'.pdf'
    mydata['title'] = '中石化长岭分公司'
    mydata['subtitle'] = v['unit']
    mydata['id'] = id
    mydata['name'] = v['name']
    if v['sex'] == '男':
        mydata['gender'] = 'male'
    else:
        mydata['gender'] = 'female'
    
    mydata['month'] = v['month']
    mydata['fits'] = {}
    for item in list_item:
        if item in v.keys():
            if item in ['lung','pushup','step','situp']:
                mark = v[item]['成绩'].split()[0].split('.')[0]
            else:
                mark = v[item]['成绩'].split()[0]
            mydata['fits'][item] = {'mark':mark,'score':v[item]['score']}
    if len(mydata['fits']) >2:
        
        list1.append(mydata)        
        x = requests.post('http://192.168.31.163:3003', data = json.dumps(list1), headers=headers)
        print(id,v['name'],x.text)
        x.close()
    #print(mydata)
    

生成报告数据

In [ ]:
import requests
import json

headers = {
    "Content-Type": "application/json; charset=UTF-8"
    }
filename = 'data/result_长炼医院.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []

fiie_path ='./469849/'
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']
for  k, v in dict1.items(): 
    mydata = {}
    id = str(k).rjust(5,"0")
    mydata['path'] = fiie_path+id+'-'+ v['name']+'.pdf'
    mydata['title'] = '中石化长岭分公司'
    mydata['subtitle'] = v['unit']
    mydata['id'] = id
    mydata['name'] = v['name']
    if v['sex'] == '男':
        mydata['gender'] = 'male'
    else:
        mydata['gender'] = 'female'
    
    mydata['month'] = v['month']
    mydata['fits'] = {}
    for item in list_item:
        if item in v.keys():
            if item in ['lung','pushup','step','situp']:
                mark = v[item]['成绩'].split()[0].split('.')[0]
            else:
                mark = v[item]['成绩'].split()[0]
            mydata['fits'][item] = {'mark':mark,'score':v[item]['score']}
    if len(mydata['fits']) >2:        
        list1.append(mydata)        
    #x = requests.post('http://192.168.31.163:3003', data = json.dumps(list1), headers=headers)
    #print(id,v['name'],x.text)
    #x.close()
    #print(mydata)
json_data = json.dumps(list1,ensure_ascii=False, indent=4)  

# 将 json 数据写入文件
with open("data/长炼医院data.json", "w",encoding = 'utf-8') as file:
    file.write(json_data)      

核对成绩

In [ ]:
import json
import csv

filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict3 = json.load(fl) 
for k,v in dict3.items():
    item[k] = v
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'

re_ta = {}
list1 = []
item_list = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp']
filename = 'data/places_result_20230830.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[2])
       
    m_item = str(result[3])    
    re_ta.setdefault(user,{})            
    item_name = item[m_item]['en']
    re_ta[user].setdefault(item_name,{})  
    score = int(result[4])/item[m_item]['divisor']    
    re_ta[user][item_name]['成绩'] = result[5]

filename = 'data/长炼医院data.json'
with open(filename,'r') as fl:
    list1 = json.load(fl)
for data in list1:
    code = str(int(data['id']))
    for k, v in data['fits'].items():
        if code in re_ta.keys():
            if k in item_list:
                print(code,k,v['score'],re_ta[code][k]['成绩'])
            if k == 'bmi':
                print(code,k,v['score'],re_ta[code]['weight']['成绩'])
            
    

获取报告信息

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


fi_path = 'file/469849'
old = []
dict2 = {}
list1 = []

filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
    
fl = glob.glob(f'{fi_path}/*.pdf')
for fn in fl:
    fi_name =Path(fn).stem.split('-')[0]
    code = int(fi_name)
    
    print(fi_name,dict1[str(code)]['name'],dict1[str(code)]['code'])

报告信息导入数据库

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


myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["baogao"]

place_id = 469849
fi_path = 'file/469849'
filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
    
fl = glob.glob(f'{fi_path}/*.pdf')
list1 = []
for fn in fl:
    dict2 = {}
    fi_name =Path(fn).stem.split('-')[0]
    code = int(fi_name)
    ygbh = dict1[str(code)]['code']
    dict2 = {'place_id':place_id,'code':ygbh,'fn':Path(fn).name}
    list1.append(dict2)
mycol = mydb["pdf"]
x = mycol.insert_many(list1)
print('ok')    

学生体测

导入学生信息

In [ ]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/小学生监测花名册.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(2, sheet.max_row+1):
    if sheet.cell(n,1).value is not None:
        code = int(sheet.cell(n, 4).value)
        person.setdefault(code, {})
        dict1 = {}
        dict1['name'] = sheet.cell(n, 6).value
        if int(sheet.cell(n, 7).value) ==1:
            sex = '男'
        else:
            sex = '女'
        dict1['sex'] = sex
        birth = str(sheet.cell(n, 8).value).split()[0]
        dict1['birth'] = birth
        dict1['unit'] = sheet.cell(n, 3).value
        person[code] = dict1
filename = 'data/长岭学生名单.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('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
re_ta = {}
dict1 = {}
list1 = []
filename = 'data/长岭学生名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
rq = '20230914'
filename = f'data/places_result_{rq}.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[2])
    if user in dict1.keys():        
        m_item = str(result[3])    
        re_ta.setdefault(user,{})    
        re_ta[user]['name'] = dict1[user]['name']
        re_ta[user]['sex'] = dict1[user]['sex'] 
        re_ta[user]['unit'] = dict1[user]['unit']
        item_name = item[m_item]['name']
        re_ta[user].setdefault(item_name,{})  
        score = int(result[4])/item[m_item]['divisor']    
        re_ta[user][item_name]['成绩'] = f'{score}'
print(len(re_ta))

filename = 'data/result_长岭学生.json'
with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))

每日成绩导入

In [ ]:
import json
import openpyxl

#rq = '20230510'
items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
title = ['编号','姓名','性别','单位','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
filename = f'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(5,'0'))
    list2.append(v['name'])    
    list2.append(dict2[k]['sex'])
    list2.append(dict2[k]['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 = f'data/长岭学生体测情况表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
wb.save(filename)

汇总手工数据

In [ ]:
import json
import openpyxl

filename = f'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)
wb = openpyxl.load_workbook('data/潭溪小学学生体测数据.xlsx')
sheet = wb.active
for n in range(2, sheet.max_row+1):
    if sheet.cell(n,4).value is not None:
        code = int(sheet.cell(n, 4).value)
        if str(code) not in dict1.keys():
            dict1[str(code)] = dict2[str(code)]
            print(code)
        else:
            dict1[str(code)]['birth'] = dict2[str(code)]['birth']
        if sheet.cell(n,8).value is not None:
            dict1[str(code)].setdefault('50米跑',{})
            dict1[str(code)]['50米跑']['成绩'] = sheet.cell(n,8).value
        if sheet.cell(n,9).value is not None:
            dict1[str(code)].setdefault('一分钟跳绳',{})
            dict1[str(code)]['一分钟跳绳']['成绩'] = sheet.cell(n,9).value
        if sheet.cell(n,10).value is not None:
            dict1[str(code)].setdefault('一分钟仰卧起坐',{})
            dict1[str(code)]['一分钟仰卧起坐']['成绩'] = sheet.cell(n,10).value
        if sheet.cell(n,11).value is not None:
            dict1[str(code)].setdefault('50米x8往返跑',{})
            dict1[str(code)]['50米x8往返跑']['成绩'] = sheet.cell(n,11).value
filename = f'data/result_长岭学生all.json'

with open(filename, 'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False)
print('ok')        

导出汇总数据

In [ ]:
import json
import openpyxl

filename = f'data/result_长岭学生all.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
items = ['身高','体重','肺活量','坐位体前屈','50米跑','一分钟跳绳','一分钟仰卧起坐','50米x8往返跑']
for k, v in dict1.items():    
    list2 = []
    list2.append(str(k))
    list2.append(v['name'])    
    list2.append(dict2[k]['sex'])
    list2.append(dict2[k]['unit']) 
    for item in items:
        if item in v.keys():
            list2.append(v[item]['成绩'])  
        else:
            list2.append('') 
    list1.append(list2)
filename = f'data/长岭学生体测情况表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
wb.save(filename)

汇总学生得分

In [ ]:
import json
import openpyxl

filename = 'data/长岭学生名单.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
dict1 = {}
wb = openpyxl.load_workbook('data/长岭学生体测成绩表.xlsx')
sheet = wb.active
for n in range(2, sheet.max_row+1):
    if sheet.cell(n,1).value is not None:
        code = str(sheet.cell(n,1).value)
        dict1[code] = dict2[code]
        dict1[code]['grade'] = dict2[code]['unit'][:1]
        if sheet.cell(n,5).value is not None:
            dict1[code]['BMI'] = int(sheet.cell(n,5).value)
        if sheet.cell(n,6).value is not None:
            dict1[code]['肺活量'] = int(sheet.cell(n,6).value)
        if sheet.cell(n,7).value is not None:
            dict1[code]['坐位体前屈'] = int(sheet.cell(n,7).value)
        if sheet.cell(n,8).value is not None:
            dict1[code]['50米跑'] = int(sheet.cell(n,8).value)
        if sheet.cell(n,9).value is not None:
            dict1[code]['一分钟跳绳'] = int(sheet.cell(n,9).value)
        if sheet.cell(n,10).value is not None:
            dict1[code]['仰卧起坐'] = int(sheet.cell(n,10).value)
        if sheet.cell(n,11).value is not None:
            dict1[code]['往返跑'] = int(sheet.cell(n,11).value)
            
filename = f'data/score_长岭学生.json'

with open(filename, 'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False)
print('ok')        
        
        
        

计算学生总分及平均分

In [ ]:
import json

filename = f'data/score_长岭学生.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
items =['BMI','肺活量','坐位体前屈','50米跑','一分钟跳绳','仰卧起坐','往返跑']
for k, v in dict1.items():
    i = 0
    t_score = 0
    for item in items:
        if item in v.keys():
            i+=1
            t_score = t_score + v[item]
    dict1[k]['总分'] = t_score
    dict1[k]['平均分'] =round(t_score/i,2)
    dict1[k]['项目数'] = i
with open(filename, 'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False)
print('ok')    

统计男女学生数据

In [ ]:
import json

filename = f'data/score_长岭学生.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

n = 0
f = 0
m = 0
m_score = 0
f_score = 0
for k, v in dict1.items():
    if v['sex'] == '男':
        m+=1
        m_score = m_score + v['平均分']
    else:
        f+=1
        f_score = f_score + v['平均分']
print('男性学生人数:',m)
print('男性学生平均成绩:',m_score/m)
print('女性学生人数:',f)
print('女性学生平均成绩:',f_score/f)
print('参加测试学生人数:',f+m)
print('所有学生平均成绩:',(f_score+m_score)/(f+m))        
    

统计各年级学生数据

按年级整理数据

In [ ]:
import json

filename = f'data/score_长岭学生.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
grade =['一','二','三','四','五','六']
dict2 = {}
items =['BMI','肺活量','坐位体前屈','50米跑','一分钟跳绳','仰卧起坐','往返跑']
for k, v in dict1.items():
    sex = v['sex']
    dict2.setdefault(v['grade'],{})
    dict2[v['grade']].setdefault(sex,{})
    for item in v.keys():
        if item in items:
            dict2[v['grade']][sex].setdefault(item,[0.00,0,0])
            dict2[v['grade']][sex][item][0] = dict2[v['grade']][sex][item][0]+v[item]
            dict2[v['grade']][sex][item][1] = dict2[v['grade']][sex][item][1] + 1
            dict2[v['grade']][sex][item][2] = round(dict2[v['grade']][sex][item][0]/dict2[v['grade']][sex][item][1],2)
filename = f'data/grade_长岭学生.json'

with open(filename, 'w') as fl:
    json.dump(dict2, fl, ensure_ascii=False)
print('ok')        
In [ ]:
import json

filename = f'data/score_长岭学生.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
grade =['一','二','三','四','五','六']
dict2 = {}
items =['BMI','肺活量','坐位体前屈','50米跑','一分钟跳绳','仰卧起坐','往返跑']
for k, v in dict1.items():
    sex = v['sex']
    dict2.setdefault(v['grade'],{})    
    for item in v.keys():
        if item in items:
            dict2[v['grade']].setdefault(item,[0.00,0,0])
            dict2[v['grade']][item][0] = dict2[v['grade']][item][0]+v[item]
            dict2[v['grade']][item][1] = dict2[v['grade']][item][1] + 1
            dict2[v['grade']][item][2] = round(dict2[v['grade']][item][0]/dict2[v['grade']][item][1],2)
filename = f'data/grade_长岭学生(不区分性别).json'

with open(filename, 'w') as fl:
    json.dump(dict2, fl, ensure_ascii=False)
print('ok')        

按年级计算平均分

In [ ]:
filename = f'data/grade_长岭学生.json'

with open(filename,'r') as fl:
    dict1 = json.load(fl)
for k, v in dict1.items():
    print(f'{k}年级测试得分情况:')
    i = 0
    m_score = 0
    for k1,v1 in v['男'].items():
        i+=1
        m_score = m_score + v1[0]/v1[1]
    print(f'男生测试得分情况:',round(m_score/i,2))
    n = 0
    f_score = 0
    for k1,v1 in v['女'].items():
        n+=1
        f_score = f_score + v1[0]/v1[1]
    print(f'女生测试得分情况:',round(f_score/n,2))
    print(f'年级测试得分情况:',round((m_score+f_score)/(i+n),2))

按年级计算项目平均分

In [ ]:
filename = f'data/grade_长岭学生.json'

with open(filename,'r') as fl:
    dict1 = json.load(fl)
items =['BMI','肺活量','坐位体前屈','50米跑','一分钟跳绳','仰卧起坐','往返跑']
for k, v in dict1.items():
    print(f'{k}年级测试得分情况:')
    f = 0
    m = 0
    f_score = 0
    m_score = 0
    for item in items:
        for k1,v1 in v['男'].items():
            if item in v1.keys():
                
            
            i+=1
            score = score + v1[0]/v1[1]

教师体测

导入教师信息

In [ ]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/教职工监测花名册.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(2, sheet.max_row+1):
    if sheet.cell(n,1).value is not None:
        code = int(sheet.cell(n, 4).value)
        person.setdefault(code, {})
        dict1 = {}
        dict1['name'] = sheet.cell(n, 6).value
        if int(sheet.cell(n, 7).value) ==1:
            sex = '男'
        else:
            sex = '女'
        dict1['sex'] = sex
        birth = str(sheet.cell(n, 8).value).split()[0]
        dict1['birth'] = birth
        dict1['unit'] = sheet.cell(n, 3).value
        person[code] = dict1
filename = 'data/长岭教师名单.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('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
re_ta = {}
dict1 = {}
list1 = []
filename = 'data/长岭教师名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 

filename = 'data/places_result_20231005.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[2])
    if user in dict1.keys():        
        m_item = str(result[3])    
        re_ta.setdefault(user,{})    
        re_ta[user]['name'] = dict1[user]['name']
        re_ta[user]['sex'] = dict1[user]['sex'] 
        re_ta[user]['unit'] = dict1[user]['unit']
        re_ta[user]['birth'] = dict1[user]['birth']
        item_name = item[m_item]['name']
        re_ta[user].setdefault(item_name,{})  
        score = int(result[4])/item[m_item]['divisor']    
        re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))
filename = 'data/result_长岭教师.json'

with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))

计算人员年龄

In [ ]:
import json
import datetime

filename = 'data/result_长岭教师.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
for k, v in dict1.items():
    #print(k,v)
    if '.' in v['birth']:
        birth = v['birth'].split()[0].split('.')
    else:
        birth = v['birth'].split()[0].split('/')
    
    nian = int(birth[0].strip())
    yue = int(birth[1].strip())
    ri = int(birth[2].strip())
    #print(k,nian,yue,ri)
    days = (datetime.date(2023, 9, 11)-datetime.date(nian,yue,ri)).days
    v['age'] = int(days/365)
filename = 'data/result_长岭教师.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False) 
print('ok')    

计算测试得分

In [ ]:
import json
import time

filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict3 = json.load(fl) 
for k,v in dict3.items():
    item[k] = v
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'

filename = 'data/体质检测标准 (1).json'    
with open(filename,'r') as fl:
    dict1 = json.load(fl)



def cal_score(data1):
    #data = {'name':'张三','sex':'M','age':37,'item':'StepExperiment','result':46}     
    person = dict1['person']
    criteria = dict1['criteria']    
    info = data1['sex']+str(data1['age'])
    bz = person[info]
    mx = criteria[bz][data1['item']]
    result = data1['result']    
    if data1['item'] == 'reaction':
        for bz1 in mx:
            if result > bz1:
                #print(bz1)
                score = mx.index(bz1,0)
                break
            else:
                score = 5
    else:
        for bz1 in mx:
            if result < bz1:
                #print(bz1)
                score = mx.index(bz1,0)
                break
            else:
                score = 5
    return(score)
filename = 'data/体质检测标准_BMI.json'
with open(filename,'r') as fl:
    dict4 = json.load(fl) 
    
def cal_bmi(data1):
   # data = {'name':'张三','sex':'M','age':37,'item':'HeightWeight','result':'177.7,97.0'}
    person = dict4['person']
    criteria = dict4['criteria']
    
    info = data1['sex']+str(data1['age'])
    bz = person[info]
    #print(bz)
    result = data1['result']
    print(result)
    height = int(float(result.split(',')[0]))
    weight = float(result.split(',')[1])
    mx = criteria[bz][str(height)]
    if weight < mx[0]:
        score = 1
    elif weight < mx[1]:
        score = 3
    elif weight < mx[2]:
        score = 5    
    elif weight <= mx[3]:
        score = 3  
    elif weight > mx[3]:
        score = 1
    return score
    
    

#list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','height','weight']
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp']
filename = 'data/result_长岭教师.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
for k, v in dict2.items():
    if v['sex'] == '男':
        sex = 'M'
    else:
        sex = 'F'            
    if 'height' in v.keys() and 'weight' in v.keys():
        bmi_data = v['height']['成绩'].split()[0]+','+ v['weight']['成绩'].split()[0]
        data1 = {'sex':sex,'age':v['age'],'item':'HeightWeight','result':bmi_data}
        dict2[k]['bmi'] = {}
        dict2[k]['bmi']['成绩'] = bmi_data
        dict2[k]['bmi']['score'] = cal_bmi(data1)
    for item_en in list_item:
        if item_en in v.keys():            
            data1 = {'sex':sex,'age':v['age'],'item':item_en,'result':float(v[item_en]['成绩'].split()[0])}
            dict2[k][item_en]['score'] = cal_score(data1)
            #print(k,v[item_en]['成绩'],cal_score(data1))

filename = f'data/result_长岭教师.json'
with open(filename,'w') as fl:
    json.dump(dict2,fl , ensure_ascii=False) 
print('ok!')        
In [ ]:
In [ ]:
import json


list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']
filename = 'data/result_长岭教师.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    print(k)
    score = 0
    i = 0    
    for k1,v1 in v.items():  
        if k1 in list_item:
            score = score + int(v1['score'])
            i+=1
    dict1[k]['score'] = round(score/i,2)            

with open(filename,'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False) 
print('ok')

计算平均成绩

In [ ]:
import json

filename = f'data/result_长岭教师.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
i = 1
m = 0
f = 0
score = 0
t_score = 0
for k,v in dict1.items():
    if v['sex'] == '男':
        m = m +1
        score = score+v['score']
print(f'平均成绩:{round(score/m,4)}分,男性:{m}人')
t_score = t_score + score
score = 0
for k,v in dict1.items():
    if v['sex'] == '女':
        f = f +1
        score = score+v['score']
print(f'平均成绩:{round(score/f,4)}分,女性:{f}人')
t_score = t_score + score
print(f'平均成绩:{round(t_score/38,4)}分,总体:38人')

计算各项目平均成绩

In [ ]:
import json

filename = f'data/result_长岭教师.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
i = 1
m = 0
f = 0
score = 0
t_score = 0
list_item = ['lung','flexion','reaction','bmi']
for item in list_item:
    m = 0
    f = 0
    score = 0
    t_score = 0
    for k,v in dict1.items():
        if v['sex'] == '男' and item in v.keys():
            m = m +1
            score = score+v['score']
    print(f'{item}平均成绩:{round(score/m,4)}分,男性:{m}人')
    t_score = t_score + score
    score = 0
    for k,v in dict1.items():
        if v['sex'] == '女' and item in v.keys():
            f = f +1
            score = score+v['score']
    print(f'{item}平均成绩:{round(score/f,4)}分,女性:{f}人')
    t_score = t_score + score
    print(f'{item}平均成绩:{round(t_score/(f+m),4)}分,总体:{f+m}人')

员工数据分析

获取人员测试成绩

In [ ]:
import json
import datetime
import csv
from datetime import date

filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'


re_ta = {}
dict1 = {}
list1 = []
filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 

filename = 'data/places_result_20231202.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)
#f_item = ['lung','grip','flexion','jump','balance','reaction','step','situp']
#m_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step']
for result in list1:
    user = str(result[2])
    item_id = int(result[3])
    performance = int(result[4])
    rq = date.fromisoformat(result[6].replace('/','-'))
    if user in dict1.keys() and (item_id!=3 or performance>0):
        l_xm = []
        m_item = str(result[3])    
        re_ta.setdefault(user,{})    
        re_ta[user]['name'] = dict1[user]['name']
        re_ta[user]['sex'] = dict1[user]['sex']
        if dict1[user]['sex'] == '男':
            l_xm = ['weight','height','lung','grip','flexion','jump','pushup','balance','reaction','step']
        else:
            l_xm = ['weight','height','lung','grip','flexion','jump','balance','reaction','step','situp']
        re_ta[user]['unit'] = dict1[user]['unit']
        birth = date.fromisoformat(dict1[user]['birth'].replace('/','-'))
        #nian = int(birth[0].strip())
        #yue = int(birth[1].strip())
        #ri = int(birth[2].strip())
        #print(k,nian,yue,ri)
        item_name = item[m_item]['en']        
        if item_name in l_xm:            
            days = (rq-birth).days        
            re_ta[user]['age'] = int(days/365)
            re_ta[user]['month'] = int(days/365*12)
            re_ta[user]['rq'] = result[6]


            re_ta[user].setdefault(item_name,{})  
            score = int(result[4])/item[m_item]['divisor']    
            re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))
filename = 'data/result_长炼医院.json'

with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))

计算项目成绩

In [ ]:
import json
import time

filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict3 = json.load(fl) 
for k,v in dict3.items():
    item[k] = v
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'

filename = 'data/体质检测标准 (1).json'    
with open(filename,'r') as fl:
    dict1 = json.load(fl)



def cal_score(data1):
    #data = {'name':'张三','sex':'M','age':37,'item':'StepExperiment','result':46}     
    person = dict1['person']
    criteria = dict1['criteria']
    if data1['age'] >59:
        data1['age'] = 59
    if data1['age'] <20:
        data1['age'] = 20
    info = data1['sex']+str(data1['age'])
    bz = person[info]
    mx = criteria[bz][data1['item']]
    result = data1['result']    
    if data1['item'] == 'reaction':
        for bz1 in mx:
            if result > bz1:
                #print(bz1)
                score = mx.index(bz1,0)
                break
            else:
                score = 5
    else:
        for bz1 in mx:
            if result < bz1:
                #print(bz1)
                score = mx.index(bz1,0)
                break
            else:
                score = 5
    return(score)
filename = 'data/体质检测标准_BMI.json'
with open(filename,'r') as fl:
    dict4 = json.load(fl) 
    
def cal_bmi(data1):
   # data = {'name':'张三','sex':'M','age':37,'item':'HeightWeight','result':'177.7,97.0'}
    person = dict4['person']
    criteria = dict4['criteria']
    if data1['age'] > 59:
        data1['age'] = 59
    if data1['age'] <20:
        data1['age'] = 20
    info = data1['sex']+str(data1['age'])
    bz = person[info]
    #print(bz)
    result = data1['result']
    #print(data1['code'],result)
    height = int(float(result.split(',')[0]))
    weight = float(result.split(',')[1])
    if str(height) not in criteria[bz]:
        score = 1
    else:   
        mx = criteria[bz][str(height)]
        if weight < mx[0]:
            score = 1
        elif weight < mx[1]:
            score = 3
        elif weight < mx[2]:
            score = 5    
        elif weight <= mx[3]:
            score = 3  
        elif weight > mx[3]:
            score = 1
    return score   
    

#list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','height','weight']
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp']
filename = 'data/result_长炼医院.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
for k, v in dict2.items():
    #print(k)
    if v['sex'] == '男':
        sex = 'M'
    else:
        sex = 'F'            
    if 'height' in v.keys() and 'weight' in v.keys():
        bmi_data = v['height']['成绩'].split()[0]+','+ v['weight']['成绩'].split()[0]
        data1 = {'code':k,'sex':sex,'age':v['age'],'item':'HeightWeight','result':bmi_data}
        dict2[k]['bmi'] = {}
        dict2[k]['bmi']['成绩'] = bmi_data
        dict2[k]['bmi']['score'] = cal_bmi(data1)
    for item_en in list_item:
        if item_en in v.keys():            
            data1 = {'code':k,'sex':sex,'age':v['age'],'item':item_en,'result':float(v[item_en]['成绩'].split()[0])}
            dict2[k][item_en]['score'] = cal_score(data1)
            #print(k,v[item_en]['成绩'],cal_score(data1))

filename = f'data/result_长炼医院.json'
with open(filename,'w') as fl:
    json.dump(dict2,fl , ensure_ascii=False) 
print('ok!')        

清理报告数据

In [ ]:
import json
import openpyxl


filename = 'data/result_长炼医院.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

    
#items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
items = {}
items['lung'] = '肺活量'
items['grip'] ='握力'
items['flexion'] ='坐位体前屈'
items['jump'] ='纵跳'
items['pushup'] ='俯卧撑'
items['balance'] ='单脚站立'
items['reaction'] ='选择反应时'
items['step'] ='台阶指数'
items['situp'] ='一分钟仰卧起坐'
items['bmi'] ='BMI'


list1 = []
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']
i=1
list2 = []
dict2 = {}
for  k, v in dict1.items():
    list1 = []
    mydata = {}
    
    id = str(k).rjust(8,"0")
    mydata['unit'] = v['unit']
    mydata['name'] = v['name']
    mydata['sex'] = v['sex']
    mydata['month'] = v['month']
    age = int(v['month']/12)
    if age <20:
        mydata['age'] = 20
    else:
        mydata['age'] = int(v['month']/12)
    
    mydata['fits'] = {}
    score = 0
    for item in list_item:
        if item in v.keys():
            if item in ['lung','pushup','step','situp']:
                mark = v[item]['成绩'].split()[0].split('.')[0]
            else:
                mark = v[item]['成绩'].split()[0]
            mydata['fits'][items[item]] = {'mark':mark,'score':v[item]['score']}
            score = score + v[item]['score']
    if len(mydata['fits'])>0:
           mydata['score'] = round(score/len(mydata['fits']),2)
    if len(mydata['fits']) >2:
        dict2[str(k)] = mydata
print(len(dict2))
filename = f'data/data_长炼医院.json'
with open(filename,'w') as fl:
    json.dump(dict2,fl , ensure_ascii=False) 
print('ok!')        

计算测试等级

In [ ]:
import json

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

filename = 'data/data_长炼医院.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
dict2 = {}
dict2['不合格'] = [0,255]
dict2['合格'] = [256,332]
dict2['良好'] = [333,367]
dict2['优秀'] = [368,500]

for k1, v1 in dict2.items():
    di = v1[0]
    gao = v1[1]
    i = 0    
    m = 0
    f = 0
    for k,v in dict1.items():
        if int(v['score']*100) in range(di,gao+1):
            dict1[k]['level'] = k1
            i+=1
            if v['sex'] == '男':
                m = m +1
            else:
                f = f+1
    print(f'{di}~{gao}分人数:{i}人,男性:{m}人,女性:{f}人')
print(len(dict1))

根据年龄汇总人员信息及成绩

In [ ]:
nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,69]]

with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for item in nld:
    di = item[0]
    gao = item[1]
    i = 1
    score = 0
    m = 0
    f = 0
    for k,v in dict1.items():
        if v['age'] in range(di,gao+1):
            score = score+v['score']
            i+=1
            if v['sex'] == '男':
                m = m +1
            
    print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i-1}人,男性:{m}人')

员工体测2024年

In [ ]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/湖南石化青年体质检测.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(3, sheet.max_row+1):
    if sheet.cell(n,1).value is not None:
        code = int(sheet.cell(n, 4).value)
        person.setdefault(code, {})
        dict1 = {}
        dict1['name'] = sheet.cell(n, 6).value
        if int(sheet.cell(n, 7).value) ==1:
            sex = '男'
        else:
            sex = '女'
        dict1['sex'] = sex
        birth = str(sheet.cell(n, 8).value).split()[0]
        dict1['birth'] = birth
        dict1['unit'] = sheet.cell(n, 3).value
        person[code] = dict1
filename = 'data/湖南石化青年体质检测.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')
In [24]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/湖南石化青年体质检测.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(3, sheet.max_row+1):
    if sheet.cell(n,1).value is not None:
        code = int(sheet.cell(n, 3).value)
        person.setdefault(code, {})
        dict1 = {}
        dict1['name'] = sheet.cell(n, 4).value
        dict1['sex'] = sheet.cell(n, 5).value
        birth = str(sheet.cell(n, 8).value).split()[0]
        dict1['birth'] = birth
        dict1['unit'] = sheet.cell(n, 2).value
        person[code] = dict1
del person[1]
del person[2]
filename = 'data/湖南石化青年体质检测.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')
ok

汇总2023、2024人员

In [2]:
import json

filename = 'data/长炼医院人员2024.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
filename = 'data/长炼医院人员名单.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 

for k, v in dict2.items():
    dict1[k] = v
filename = 'data/长炼医院人员2024(汇总).json'
with open(filename, 'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False)
print('ok')
ok

获取人员测试成绩

In [26]:
import json
import time
import csv

filename = '../item1.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
re_ta = {}
dict1 = {}
list1 = []
filename = 'data/长炼医院人员2024.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 

filename = 'data/places_result_20241205-1.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[2])
    if user in dict1.keys():        
        m_item = str(result[3])    
        re_ta.setdefault(user,{})    
        re_ta[user]['name'] = dict1[user]['name']
        re_ta[user]['sex'] = dict1[user]['sex'] 
        re_ta[user]['unit'] = dict1[user]['unit']
        item_name = item[m_item]['name']
        re_ta[user].setdefault(item_name,{})  
        score = int(result[4])/item[m_item]['divisor']    
        re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))
filename = 'data/result_长炼医院人员2024.json'

with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))
207
207
In [7]:
import json
import time
import csv

filename = '../item1.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
re_ta = {}
dict1 = {}
list1 = []
filename = 'data/湖南石化青年体质检测.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 

filename = 'data/places_result_20241205-1.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[2])
    if user in dict1.keys():        
        m_item = str(result[3])    
        re_ta.setdefault(user,{})    
        re_ta[user]['name'] = dict1[user]['name']
        re_ta[user]['sex'] = dict1[user]['sex'] 
        re_ta[user]['unit'] = dict1[user]['unit']
        item_name = item[m_item]['name']
        re_ta[user].setdefault(item_name,{})  
        score = int(result[4])/item[m_item]['divisor']    
        re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))
filename = 'data/result_长炼医院人员2024(湖南青年).json'

with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))
78
78
In [13]:
import json
import datetime
import csv
from datetime import date

filename = '../item1.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'


re_ta = {}
dict1 = {}
list1 = []
filename = 'data/湖南石化青年体质检测.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 


filename = 'data/places_result_20241205-1.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)
#f_item = ['lung','grip','flexion','jump','balance','reaction','step','situp']
#m_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step']
for result in list1:
    user = str(result[2])
    rq = date.fromisoformat(result[6].replace('/','-'))
    if user in dict1.keys():
        l_xm = []
        m_item = str(result[3])    
        re_ta.setdefault(user,{})    
        re_ta[user]['name'] = dict1[user]['name']
        re_ta[user]['sex'] = dict1[user]['sex']
        if dict1[user]['sex'] == '男':
            l_xm = ['weight','height','lung','grip','flexion','jump','pushup','balance','reaction','step']
        else:
            l_xm = ['weight','height','lung','grip','flexion','jump','balance','reaction','step','situp']
        re_ta[user]['unit'] = dict1[user]['unit']
        birth = date.fromisoformat(dict1[user]['birth'].replace('/','-'))
        #birth = date.fromisoformat(dict1[user]['birth'])
        #nian = int(birth[0].strip())
        #yue = int(birth[1].strip())
        #ri = int(birth[2].strip())
        #print(k,nian,yue,ri)
        item_name = item[m_item]['en']        
        if item_name in l_xm:            
            days = (rq-birth).days        
            re_ta[user]['age'] = int(days/365)
            re_ta[user]['month'] = int(days/365*12)
            re_ta[user]['rq'] = result[6]


            re_ta[user].setdefault(item_name,{})  
            score = int(result[4])/item[m_item]['divisor']    
            re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))
filename = 'data/result_长炼医院人员2024(湖南青年).json'

with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))
78
78

导出测试人员信息(湖南青年)

In [25]:
import json
import openpyxl

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

filename = 'data/result_长炼医院人员2024.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():
    if k in dict2.keys():
        list2 = []
        list2.append(str(k).rjust(5,'0'))
        list2.append(v['name'])    
        list2.append(dict2[k]['sex'])
        list2.append(dict2[k]['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/长炼医院人员检测情况表(湖南青年).xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
    
wb.save(filename)

导出测试人员信息(非湖南青年)

In [28]:
import json
import openpyxl

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

filename = 'data/result_长炼医院人员2024.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

filename = 'data/湖南石化青年体质检测.json'
with open(filename,'r') as fl:
    dict3 = json.load(fl)

filename = 'data/长炼医院人员2024.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
list1 = []
for k, v in dict1.items():
    if k in dict2.keys() and k not in dict3.keys():
        list2 = []
        list2.append(str(k).rjust(5,'0'))
        list2.append(v['name'])    
        list2.append(dict2[k]['sex'])
        list2.append(dict2[k]['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/长炼医院人员检测情况表(非湖南青年).xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
    
wb.save(filename)

核对重名人员

In [1]:
import json
import openpyxl

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

filename = 'data/长炼医院人员2024.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)

filename = 'data/湖南石化青年体质检测.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
    
set1 = set()

for k, v in dict2.items():
    set1.add(v['name'])

for k, v in dict1.items():
    if v['name'] in set1:
        print(k,v['name'])
3437581 李成伟
3526193 李可
3464205 胡雨丹
1010 邱亮
1012 吴磊
3464081 刘权
3125625 宋霰
1020 贾俊
1022 徐敬
1023 彭一夫
1024 刘至清
1053 刘志刚
1058 杨红
1069 李鑫
1144 黄英杰
In [6]:
import json
import time
import csv

filename = '../item1.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
re_ta = {}
dict1 = {}
list1 = []
filename = 'data/长炼医院人员2024(汇总).json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 

filename = 'data/places_result_20241206.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[2])
    if user in dict1.keys():        
        m_item = str(result[3])    
        re_ta.setdefault(user,{})    
        re_ta[user]['name'] = dict1[user]['name']
        re_ta[user]['sex'] = dict1[user]['sex'] 
        re_ta[user]['unit'] = dict1[user]['unit']
        item_name = item[m_item]['name']
        re_ta[user].setdefault(item_name,{})  
        score = int(result[4])/item[m_item]['divisor']    
        re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))
filename = 'data/result_长炼医院人员2024(0417前).json'

with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))
29
29
In [ ]: