Files
jupyter/体测单位/东营老年大学.ipynb
T
2024-03-24 16:42:53 +08:00

23 KiB

体测人员导入

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

wb = openpyxl.load_workbook('data/东营老年大学.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, 4).value
    dict1['unit'] = '东营老年大学'
    dict1['birth'] = str(sheet.cell(n, 8).value).replace('/','-').split(' ')[0]
    if sheet.cell(n,6).value is not None:
        dict1['phone'] = str(sheet.cell(n,6).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 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_20240321.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 'phone' in dict1[user].keys():
            re_ta[user]['phone'] = dict1[user]['phone']
        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_东营老年大学.json'

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

导出测试人员信息

In [ ]:
import json
import openpyxl

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

filename = 'data/727410_pdf.json'
with open(filename,'r') as fl:
    list2 = json.load(fl)

list1 = []
for xm in list2: 
    list2 = []
    list2.append(xm['id'].rjust(3,'0'))
    list2.append(xm['name'])    
    list2.append(xm['gender'])    
    
    i = 0
    if 'bmi' in xm['fits'].keys():
        m_bmi = xm['fits']['bmi']['mark']
        list2.append(m_bmi.split(',')[0])
        list2.append(m_bmi.split(',')[1])
        list2.append(xm['fits']['bmi']['score'])
        i+=1
    else:
        list2.append('') 
        list2.append('') 
        list2.append('') 


    for item in items:
        if item in xm['fits'].keys():
            list2.append(xm['fits'][item]['mark'])
            list2.append(xm['fits'][item]['score']) 
            i+=1
        #elif item =='name':
        #    list2.append(dict1[k][item])
        else:
            list2.append('') 
            list2.append('') 
    print(list2)
    if i>2:
        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 json
import csv
import openpyxl
import time
from datetime import date

dict1 = {}

filename = 'data/result_东营老年大学.json'
with open(filename,'r') as fl:
    dict3 = json.load(fl)


list1 = []
filename = 'data/Survey_20240321.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        list1.append(line)
#print(list1)
dict2 = {}

for item in list1:
    psy = []
    tcm = []
    spine = []
    for i in range(0,45):
        psy.append(0)
    for i in range(0,60):
        tcm.append(0)
    for i in range(0,26):
        spine.append(0)
    phone = item[2]
    for k1, v1 in dict3.items():
        if 'phone' in  v1.keys() and phone ==v1['phone']:  
            dict1[k1] = dict3[k1]
            #dict1[k1]['month'] = dict1[k1]['age'] *12
#print(dict1)
for item in list1:
    #print(item)
    psy = []
    tcm = []
    spine = []
    for i in range(0,45):
        psy.append(0)
    for i in range(0,60):
        tcm.append(0)
    for i in range(0,26):
        spine.append(0)
    phone = item[2]
    for k1, v1 in dict1.items():
        #print((k1,v1))
        if phone ==v1['phone']:   
            content = json.loads(item[5])
            #print(content)
            
            rq = date.fromisoformat(item[6].replace('/','-').split(' ')[0])
                #dict1[phone[item[2]]]['rq'] = date.fromisoformat(item[6].replace('/','-').split(' ')[0])
            for k, v in content.items():
                #print('k:',k,'v:',v)
                if 'psyOld' in k:                    
                    i = int(k[6:])
                    psy[i-1] = int(v)
                if 'tcm' in k:                    
                    i = int(k[3:])
                    tcm[i-1] = int(v)
                if 'spine' in k:
                    i = int(k[5:])
                    spine[i-1] = int(v)
            if 'psyOld' in item[5]:
                #for i in range(5,26):
                #    new_valve = 5-psy[i]
                #    psy[i] = new_valve
                for i in range(26,40):
                    new_valve = 1+psy[i]
                    psy[i] = new_valve
                psy[44] = []
                dict1[k1]['psy'] = psy
            if 'tcm' in item[5]:
                if tcm[40] ==0:
                    tcm[40] =1
                dict1[k1]['tcm'] = tcm
            if 'spine' in item[5]:
                for ii in range(25,23,-1):
                    
                    spine[ii] = spine[ii-1]
                    
                spine[22] = 0
                
                
                
                dict1[k1]['spine'] = spine
            #birth = date.fromisoformat(dict3[k1]['birth'].replace('/','-'))

            #days =  (rq-birth).days          
            #dict1[k1]['age'] = int(days/365)
            
            dict1[k1]['rq'] = item[6].replace('/','-').split(' ')[0]
#print(dict1)
filename = 'data/result_东营老年大学1.json'

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

获取问卷人员信息

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

dict1 = {}

filename = 'data/result_东营老年大学.json'
with open(filename,'r') as fl:
    dict3 = json.load(fl)


list1 = []
filename = 'data/Survey_20240321.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        list1.append(line)


list2 = []
for item in list1:
    list3 = []
    phone = item[2]
    content = json.loads(item[5])
    name = content['name']
    gender = content['gender']
    unit = content['unit']
    list2.append([name,phone,gender,unit])
filename = 'data/东营老年大学问卷人员表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active

for row in list2:
    sheet.append(row)
    
wb.save(filename)
print('ok')    
In [ ]:
import json
import csv
import openpyxl
import time
from datetime import date

dict1 = {}

filename = 'data/result_东营老年大学.json'
with open(filename,'r') as fl:
    dict3 = json.load(fl)


list1 = []
filename = 'data/Survey_20240321.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        list1.append(line)
#print(list1)
dict2 = {}

for item in list1:
    psy = []
    tcm = []
    spine = []
    for i in range(0,45):
        psy.append(0)
    for i in range(0,60):
        tcm.append(0)
    for i in range(0,26):
        spine.append(0)
    phone = item[2]
    for k1, v1 in dict3.items():
        if 'phone' in  v1.keys() and phone ==v1['phone']:  
            dict1[k1] = dict3[k1]
            #dict1[k1]['month'] = dict1[k1]['age'] *12
#print(dict1)
for item in list1:
    #print(item)
    psy = []
    tcm = []
    spine = []
    for i in range(0,45):
        psy.append(0)
    for i in range(0,60):
        tcm.append(0)
    for i in range(0,26):
        spine.append(0)
    phone = item[2]
    for k1, v1 in dict1.items():
        #print((k1,v1))
        if 'phone' in v1.keys() and phone ==v1['phone']:   
            content = json.loads(item[5])
            #print(content)
            
            rq = date.fromisoformat(item[6].replace('/','-').split(' ')[0])
                #dict1[phone[item[2]]]['rq'] = date.fromisoformat(item[6].replace('/','-').split(' ')[0])
            for k, v in content.items():
                #print('k:',k,'v:',v)
                if 'psyOld' in k:                    
                    i = int(k[6:])
                    psy[i-1] = int(v)
                if 'tcm' in k:                    
                    i = int(k[3:])
                    tcm[i-1] = int(v)
                if 'spine' in k:
                    i = int(k[5:])
                    spine[i-1] = int(v)
            if 'psyOld' in item[5]:
                #for i in range(5,26):
                #    new_valve = 5-psy[i]
                #    psy[i] = new_valve
                for i in range(26,40):
                    new_valve = 1+psy[i]
                    psy[i] = new_valve
                psy[44] = []
                dict1[k1]['psy'] = psy
            if 'tcm' in item[5]:
                if tcm[40] ==0:
                    tcm[40] =1
                dict1[k1]['tcm'] = tcm
            if 'spine' in item[5]:
                for ii in range(25,23,-1):
                    
                    spine[ii] = spine[ii-1]
                    
                spine[22] = 0
                
                
                
                dict1[k1]['spine'] = spine
            #birth = date.fromisoformat(dict3[k1]['birth'].replace('/','-'))

            #days =  (rq-birth).days          
            #dict1[k1]['age'] = int(days/365)
            
            dict1[k1]['rq'] = item[6].replace('/','-').split(' ')[0]
#print(dict1)
filename = 'data/result_东营老年大学1.json'

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

核对人员成绩

In [ ]:
import json
import openpyxl

items = ['bmi','lung','grip','flexion','jump','pushup','situp','balance','reaction','step']
bmi = ['height','weight']


filename = 'data/727410_pdf.json'
with open(filename,'r') as fl:
    list2 = json.load(fl)

filename = 'data/result_东营老年大学1.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)    
    

for xm in list2: 
    id = xm['id']
    if str(id) in dict1.keys():
        #print(id,xm['name'])
        for item in xm['fits'].keys():
            y_score = xm['fits'][item]['score']
            if item not in dict1[str(id)].keys() or y_score != dict1[str(id)][item]['score']:
                print(id,xm['name'],item,'no')

更新人员手机号码

In [69]:
import openpyxl
import json
from datetime import date

filename = 'data/东营老年大学.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 


wb = openpyxl.load_workbook('data/东营老年大学电话.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(2, sheet.max_row+1):
    code = str(sheet.cell(n, 3).value)
    phone = sheet.cell(n, 1).value
    if code in dict1.keys():
        print(phone,code,dict1[code]['phone'])
        dict1[code]['phone'] = phone
        
    
filename = 'data/东营老年大学.json'
with open(filename, 'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False)
print('ok')
13375466638 1 13375466638
13589432668 2 13589432668
13054619993 3 13054619993
18554686537 4 18554686537
15805460500 5 15805460500
13705468382 6 13705468382
18654618688 7 18654618688
13505466886 9 13505466886
13361529316 10 13361529316
18654605758 11 18654605758
13963369251 12 13963369251
13854666193 13 13854666193
13963381767 14 13963381767
13562277783 15 13562277783
13854664965 16 13854664965
18506464679 17 18506464679
18865467010 18 18865467010
18505460998 19 18505460998
15266083778 20 15266083778
15865469239 21 15865469239
15154607897 22 15154607897
13963359091 23 13963359091
13685469953 24 13685469953
18615463569 25 18615463569
13518666896 27 13518666896
13668615983 28 13668615983
13562269069 29 13562269069
15066075216 30 15066075216
18754687658 31 18754687658
13668618731 32 18254610712
15552721566 33 15552721566
18678690907 34 18678690907
13082610996 35 13082610996
13563351026 36 13563351026
13506369296 37 13506369296
13589986263 38 13589986263
13589996697 39 13589996697
18905465618 40 18905465618
18954035397 41 18954035397
13906472659 42 13906472659
15618032716 43 15618032716
18661382930 44 18661382930
13505465335 45 13505465335
13854622388 47 13854622388
13589961161 48 13589961161
18860657259 49 18860657259
13963358011 50 13963358011
13605466080 51 13605466080
13505461565 53 13505461565
15550539718 54 15550539718
15698085191 55 15698985191
18562110866 56 1856210866
13376472932 58 13376472932
18653690626 59 18653690626
13515466253 60 13515466253
13054652092 61 13054652092
13280380156 62 13280380156
18254621588 63 18254621588
13854620482 65 13854620482
13376473932 66 13376473932
18654335533 67 18654335533
16605466518 68 16605466518
13706364787 69 13706364787
ok
In [ ]: