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

711 lines
23 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "04524c85-988e-4dbf-86eb-939a9db7aa28",
"metadata": {},
"source": [
"## 体测人员导入"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bbba6efc-73cd-4db6-bae7-014724fee731",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"from datetime import date\n",
"\n",
"wb = openpyxl.load_workbook('data/东营老年大学.xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"person = {}\n",
"\n",
"for n in range(2, sheet.max_row+1):\n",
" code = int(sheet.cell(n, 1).value)\n",
" person.setdefault(code, {})\n",
" dict1 = {}\n",
" dict1['name'] = sheet.cell(n, 2).value\n",
" dict1['sex'] = sheet.cell(n, 4).value\n",
" dict1['unit'] = '东营老年大学'\n",
" dict1['birth'] = str(sheet.cell(n, 8).value).replace('/','-').split(' ')[0]\n",
" if sheet.cell(n,6).value is not None:\n",
" dict1['phone'] = str(sheet.cell(n,6).value) \n",
" person[code] = dict1\n",
"filename = 'data/东营老年大学.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(person, fl, ensure_ascii=False)\n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "6bcd45c2-10af-4d5f-9e0b-5cd1df4f7a7f",
"metadata": {},
"source": [
"## 获取人员测试成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "970e171e-1360-448f-a28c-520ccb8f314a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import datetime\n",
"import csv\n",
"from datetime import date\n",
"\n",
"filename = '../item.json'\n",
"item = {}\n",
"unit = {}\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for k,v in dict1.items():\n",
" item[k] = v\n",
"item['1']['en'] = 'lung'\n",
"item['2']['en'] = 'grip'\n",
"item['3']['en'] = 'flexion'\n",
"item['4']['en'] = 'jump'\n",
"item['5']['en'] = 'pushup'\n",
"item['6']['en'] = 'balance'\n",
"item['7']['en'] = 'reaction'\n",
"item['8']['en'] = 'step'\n",
"item['9']['en'] = 'situp'\n",
"item['10']['en'] = 'height'\n",
"item['11']['en'] = 'weight'\n",
"\n",
"\n",
"re_ta = {}\n",
"dict1 = {}\n",
"list1 = []\n",
"filename = 'data/东营老年大学.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"\n",
"filename = 'data/places_result_20240321.csv'\n",
"with open(filename,'r',newline='') as csv_file:\n",
" fl = csv.reader(csv_file,delimiter=',')\n",
" header = next(fl) \n",
" for line in fl:\n",
" #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n",
" list1.append(line)\n",
"#f_item = ['lung','grip','flexion','jump','balance','reaction','step','situp']\n",
"#m_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step']\n",
"for result in list1:\n",
" user = str(result[2])\n",
" rq = date.fromisoformat(result[6].replace('/','-'))\n",
" if user in dict1.keys():\n",
" l_xm = []\n",
" m_item = str(result[3]) \n",
" re_ta.setdefault(user,{}) \n",
" re_ta[user]['name'] = dict1[user]['name']\n",
" re_ta[user]['sex'] = dict1[user]['sex']\n",
" if 'phone' in dict1[user].keys():\n",
" re_ta[user]['phone'] = dict1[user]['phone']\n",
" if dict1[user]['sex'] == '男':\n",
" l_xm = ['weight','height','lung','grip','flexion','jump','pushup','balance','reaction','step']\n",
" else:\n",
" l_xm = ['weight','height','lung','grip','flexion','jump','balance','reaction','step','situp']\n",
" re_ta[user]['unit'] = dict1[user]['unit']\n",
" #birth = date.fromisoformat(dict1[user]['birth'].replace('/','-'))\n",
" birth = date.fromisoformat(dict1[user]['birth'])\n",
" #nian = int(birth[0].strip())\n",
" #yue = int(birth[1].strip())\n",
" #ri = int(birth[2].strip())\n",
" #print(k,nian,yue,ri)\n",
" item_name = item[m_item]['en'] \n",
" if item_name in l_xm: \n",
" days = (rq-birth).days \n",
" re_ta[user]['age'] = int(days/365)\n",
" re_ta[user]['month'] = int(days/365*12)\n",
" re_ta[user]['rq'] = result[6]\n",
"\n",
"\n",
" re_ta[user].setdefault(item_name,{}) \n",
" score = int(result[4])/item[m_item]['divisor'] \n",
" re_ta[user][item_name]['成绩'] = f'{score} {item[m_item][\"unit\"]}'\n",
"print(len(re_ta))\n",
"filename = 'data/result_东营老年大学.json'\n",
"\n",
"with open(filename,'w') as fl:\n",
" json.dump(re_ta, fl, ensure_ascii=False) \n",
"print(len(re_ta))"
]
},
{
"cell_type": "markdown",
"id": "d034a61d-1fbd-417b-99bd-277e43ebb678",
"metadata": {},
"source": [
"## 导出测试人员信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0c60a509-dfc0-426a-a44e-e9a760139463",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"\n",
"items = ['lung','grip','flexion','jump','pushup','situp','balance','reaction','step']\n",
"bmi = ['height','weight']\n",
"title = ['编号','姓名','性别','身高','体重','bmi','肺活量','','握力','','坐位体前屈','','纵跳','','俯卧撑','','一分钟仰卧起坐','','单脚站立','','选择反应时','','台阶指数']\n",
"\n",
"filename = 'data/727410_pdf.json'\n",
"with open(filename,'r') as fl:\n",
" list2 = json.load(fl)\n",
"\n",
"list1 = []\n",
"for xm in list2: \n",
" list2 = []\n",
" list2.append(xm['id'].rjust(3,'0'))\n",
" list2.append(xm['name']) \n",
" list2.append(xm['gender']) \n",
" \n",
" i = 0\n",
" if 'bmi' in xm['fits'].keys():\n",
" m_bmi = xm['fits']['bmi']['mark']\n",
" list2.append(m_bmi.split(',')[0])\n",
" list2.append(m_bmi.split(',')[1])\n",
" list2.append(xm['fits']['bmi']['score'])\n",
" i+=1\n",
" else:\n",
" list2.append('') \n",
" list2.append('') \n",
" list2.append('') \n",
"\n",
"\n",
" for item in items:\n",
" if item in xm['fits'].keys():\n",
" list2.append(xm['fits'][item]['mark'])\n",
" list2.append(xm['fits'][item]['score']) \n",
" i+=1\n",
" #elif item =='name':\n",
" # list2.append(dict1[k][item])\n",
" else:\n",
" list2.append('') \n",
" list2.append('') \n",
" print(list2)\n",
" if i>2:\n",
" list1.append(list2)\n",
"filename = 'data/东营老年大学体测情况表.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename)\n",
"print('ok') "
]
},
{
"cell_type": "markdown",
"id": "d794e69d-9444-4765-9b7d-8dcb0f8c4343",
"metadata": {},
"source": [
"## 导入问卷信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "79fb7799-3693-4b7b-ae82-c0d8dee98d36",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import csv\n",
"import openpyxl\n",
"import time\n",
"from datetime import date\n",
"\n",
"dict1 = {}\n",
"\n",
"filename = 'data/result_东营老年大学.json'\n",
"with open(filename,'r') as fl:\n",
" dict3 = json.load(fl)\n",
"\n",
"\n",
"list1 = []\n",
"filename = 'data/Survey_20240321.csv'\n",
"with open(filename,'r',newline='') as csv_file:\n",
" fl = csv.reader(csv_file,delimiter=',')\n",
" header = next(fl) \n",
" for line in fl:\n",
" list1.append(line)\n",
"#print(list1)\n",
"dict2 = {}\n",
"\n",
"for item in list1:\n",
" psy = []\n",
" tcm = []\n",
" spine = []\n",
" for i in range(0,45):\n",
" psy.append(0)\n",
" for i in range(0,60):\n",
" tcm.append(0)\n",
" for i in range(0,26):\n",
" spine.append(0)\n",
" phone = item[2]\n",
" for k1, v1 in dict3.items():\n",
" if 'phone' in v1.keys() and phone ==v1['phone']: \n",
" dict1[k1] = dict3[k1]\n",
" #dict1[k1]['month'] = dict1[k1]['age'] *12\n",
"#print(dict1)\n",
"for item in list1:\n",
" #print(item)\n",
" psy = []\n",
" tcm = []\n",
" spine = []\n",
" for i in range(0,45):\n",
" psy.append(0)\n",
" for i in range(0,60):\n",
" tcm.append(0)\n",
" for i in range(0,26):\n",
" spine.append(0)\n",
" phone = item[2]\n",
" for k1, v1 in dict1.items():\n",
" #print((k1,v1))\n",
" if phone ==v1['phone']: \n",
" content = json.loads(item[5])\n",
" #print(content)\n",
" \n",
" rq = date.fromisoformat(item[6].replace('/','-').split(' ')[0])\n",
" #dict1[phone[item[2]]]['rq'] = date.fromisoformat(item[6].replace('/','-').split(' ')[0])\n",
" for k, v in content.items():\n",
" #print('k:',k,'v:',v)\n",
" if 'psyOld' in k: \n",
" i = int(k[6:])\n",
" psy[i-1] = int(v)\n",
" if 'tcm' in k: \n",
" i = int(k[3:])\n",
" tcm[i-1] = int(v)\n",
" if 'spine' in k:\n",
" i = int(k[5:])\n",
" spine[i-1] = int(v)\n",
" if 'psyOld' in item[5]:\n",
" #for i in range(5,26):\n",
" # new_valve = 5-psy[i]\n",
" # psy[i] = new_valve\n",
" for i in range(26,40):\n",
" new_valve = 1+psy[i]\n",
" psy[i] = new_valve\n",
" psy[44] = []\n",
" dict1[k1]['psy'] = psy\n",
" if 'tcm' in item[5]:\n",
" if tcm[40] ==0:\n",
" tcm[40] =1\n",
" dict1[k1]['tcm'] = tcm\n",
" if 'spine' in item[5]:\n",
" for ii in range(25,23,-1):\n",
" \n",
" spine[ii] = spine[ii-1]\n",
" \n",
" spine[22] = 0\n",
" \n",
" \n",
" \n",
" dict1[k1]['spine'] = spine\n",
" #birth = date.fromisoformat(dict3[k1]['birth'].replace('/','-'))\n",
"\n",
" #days = (rq-birth).days \n",
" #dict1[k1]['age'] = int(days/365)\n",
" \n",
" dict1[k1]['rq'] = item[6].replace('/','-').split(' ')[0]\n",
"#print(dict1)\n",
"filename = 'data/result_东营老年大学1.json'\n",
"\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl, ensure_ascii=False) "
]
},
{
"cell_type": "markdown",
"id": "9f9111f1-8cf0-4d45-b9b2-e3b631023581",
"metadata": {},
"source": [
"## 获取问卷人员信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d1d02189-e01a-4d7f-9fbb-09b5e72a38df",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import csv\n",
"import openpyxl\n",
"import time\n",
"from datetime import date\n",
"\n",
"dict1 = {}\n",
"\n",
"filename = 'data/result_东营老年大学.json'\n",
"with open(filename,'r') as fl:\n",
" dict3 = json.load(fl)\n",
"\n",
"\n",
"list1 = []\n",
"filename = 'data/Survey_20240321.csv'\n",
"with open(filename,'r',newline='') as csv_file:\n",
" fl = csv.reader(csv_file,delimiter=',')\n",
" header = next(fl) \n",
" for line in fl:\n",
" list1.append(line)\n",
"\n",
"\n",
"list2 = []\n",
"for item in list1:\n",
" list3 = []\n",
" phone = item[2]\n",
" content = json.loads(item[5])\n",
" name = content['name']\n",
" gender = content['gender']\n",
" unit = content['unit']\n",
" list2.append([name,phone,gender,unit])\n",
"filename = 'data/东营老年大学问卷人员表.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"\n",
"for row in list2:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename)\n",
"print('ok') "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "eb4091f4-9823-4361-acb2-f3e898f9524b",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import csv\n",
"import openpyxl\n",
"import time\n",
"from datetime import date\n",
"\n",
"dict1 = {}\n",
"\n",
"filename = 'data/result_东营老年大学.json'\n",
"with open(filename,'r') as fl:\n",
" dict3 = json.load(fl)\n",
"\n",
"\n",
"list1 = []\n",
"filename = 'data/Survey_20240321.csv'\n",
"with open(filename,'r',newline='') as csv_file:\n",
" fl = csv.reader(csv_file,delimiter=',')\n",
" header = next(fl) \n",
" for line in fl:\n",
" list1.append(line)\n",
"#print(list1)\n",
"dict2 = {}\n",
"\n",
"for item in list1:\n",
" psy = []\n",
" tcm = []\n",
" spine = []\n",
" for i in range(0,45):\n",
" psy.append(0)\n",
" for i in range(0,60):\n",
" tcm.append(0)\n",
" for i in range(0,26):\n",
" spine.append(0)\n",
" phone = item[2]\n",
" for k1, v1 in dict3.items():\n",
" if 'phone' in v1.keys() and phone ==v1['phone']: \n",
" dict1[k1] = dict3[k1]\n",
" #dict1[k1]['month'] = dict1[k1]['age'] *12\n",
"#print(dict1)\n",
"for item in list1:\n",
" #print(item)\n",
" psy = []\n",
" tcm = []\n",
" spine = []\n",
" for i in range(0,45):\n",
" psy.append(0)\n",
" for i in range(0,60):\n",
" tcm.append(0)\n",
" for i in range(0,26):\n",
" spine.append(0)\n",
" phone = item[2]\n",
" for k1, v1 in dict1.items():\n",
" #print((k1,v1))\n",
" if 'phone' in v1.keys() and phone ==v1['phone']: \n",
" content = json.loads(item[5])\n",
" #print(content)\n",
" \n",
" rq = date.fromisoformat(item[6].replace('/','-').split(' ')[0])\n",
" #dict1[phone[item[2]]]['rq'] = date.fromisoformat(item[6].replace('/','-').split(' ')[0])\n",
" for k, v in content.items():\n",
" #print('k:',k,'v:',v)\n",
" if 'psyOld' in k: \n",
" i = int(k[6:])\n",
" psy[i-1] = int(v)\n",
" if 'tcm' in k: \n",
" i = int(k[3:])\n",
" tcm[i-1] = int(v)\n",
" if 'spine' in k:\n",
" i = int(k[5:])\n",
" spine[i-1] = int(v)\n",
" if 'psyOld' in item[5]:\n",
" #for i in range(5,26):\n",
" # new_valve = 5-psy[i]\n",
" # psy[i] = new_valve\n",
" for i in range(26,40):\n",
" new_valve = 1+psy[i]\n",
" psy[i] = new_valve\n",
" psy[44] = []\n",
" dict1[k1]['psy'] = psy\n",
" if 'tcm' in item[5]:\n",
" if tcm[40] ==0:\n",
" tcm[40] =1\n",
" dict1[k1]['tcm'] = tcm\n",
" if 'spine' in item[5]:\n",
" for ii in range(25,23,-1):\n",
" \n",
" spine[ii] = spine[ii-1]\n",
" \n",
" spine[22] = 0\n",
" \n",
" \n",
" \n",
" dict1[k1]['spine'] = spine\n",
" #birth = date.fromisoformat(dict3[k1]['birth'].replace('/','-'))\n",
"\n",
" #days = (rq-birth).days \n",
" #dict1[k1]['age'] = int(days/365)\n",
" \n",
" dict1[k1]['rq'] = item[6].replace('/','-').split(' ')[0]\n",
"#print(dict1)\n",
"filename = 'data/result_东营老年大学1.json'\n",
"\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl, ensure_ascii=False) "
]
},
{
"cell_type": "markdown",
"id": "a8dbc7ae-cf00-4591-8572-600c39b37750",
"metadata": {},
"source": [
"## 核对人员成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ee84a3ce-deb7-4345-a4a4-877872996e1c",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"\n",
"items = ['bmi','lung','grip','flexion','jump','pushup','situp','balance','reaction','step']\n",
"bmi = ['height','weight']\n",
"\n",
"\n",
"filename = 'data/727410_pdf.json'\n",
"with open(filename,'r') as fl:\n",
" list2 = json.load(fl)\n",
"\n",
"filename = 'data/result_东营老年大学1.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
" \n",
"\n",
"for xm in list2: \n",
" id = xm['id']\n",
" if str(id) in dict1.keys():\n",
" #print(id,xm['name'])\n",
" for item in xm['fits'].keys():\n",
" y_score = xm['fits'][item]['score']\n",
" if item not in dict1[str(id)].keys() or y_score != dict1[str(id)][item]['score']:\n",
" print(id,xm['name'],item,'no')"
]
},
{
"cell_type": "markdown",
"id": "e76ef95a-25dc-45f2-8b8c-617acbf546c1",
"metadata": {},
"source": [
"## 更新人员手机号码"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "37e24019-9b79-4748-ae6a-2bdb6052862d",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-24T08:04:28.111191Z",
"iopub.status.busy": "2024-03-24T08:04:28.110709Z",
"iopub.status.idle": "2024-03-24T08:04:28.151253Z",
"shell.execute_reply": "2024-03-24T08:04:28.149811Z",
"shell.execute_reply.started": "2024-03-24T08:04:28.111154Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"13375466638 1 13375466638\n",
"13589432668 2 13589432668\n",
"13054619993 3 13054619993\n",
"18554686537 4 18554686537\n",
"15805460500 5 15805460500\n",
"13705468382 6 13705468382\n",
"18654618688 7 18654618688\n",
"13505466886 9 13505466886\n",
"13361529316 10 13361529316\n",
"18654605758 11 18654605758\n",
"13963369251 12 13963369251\n",
"13854666193 13 13854666193\n",
"13963381767 14 13963381767\n",
"13562277783 15 13562277783\n",
"13854664965 16 13854664965\n",
"18506464679 17 18506464679\n",
"18865467010 18 18865467010\n",
"18505460998 19 18505460998\n",
"15266083778 20 15266083778\n",
"15865469239 21 15865469239\n",
"15154607897 22 15154607897\n",
"13963359091 23 13963359091\n",
"13685469953 24 13685469953\n",
"18615463569 25 18615463569\n",
"13518666896 27 13518666896\n",
"13668615983 28 13668615983\n",
"13562269069 29 13562269069\n",
"15066075216 30 15066075216\n",
"18754687658 31 18754687658\n",
"13668618731 32 18254610712\n",
"15552721566 33 15552721566\n",
"18678690907 34 18678690907\n",
"13082610996 35 13082610996\n",
"13563351026 36 13563351026\n",
"13506369296 37 13506369296\n",
"13589986263 38 13589986263\n",
"13589996697 39 13589996697\n",
"18905465618 40 18905465618\n",
"18954035397 41 18954035397\n",
"13906472659 42 13906472659\n",
"15618032716 43 15618032716\n",
"18661382930 44 18661382930\n",
"13505465335 45 13505465335\n",
"13854622388 47 13854622388\n",
"13589961161 48 13589961161\n",
"18860657259 49 18860657259\n",
"13963358011 50 13963358011\n",
"13605466080 51 13605466080\n",
"13505461565 53 13505461565\n",
"15550539718 54 15550539718\n",
"15698085191 55 15698985191\n",
"18562110866 56 1856210866\n",
"13376472932 58 13376472932\n",
"18653690626 59 18653690626\n",
"13515466253 60 13515466253\n",
"13054652092 61 13054652092\n",
"13280380156 62 13280380156\n",
"18254621588 63 18254621588\n",
"13854620482 65 13854620482\n",
"13376473932 66 13376473932\n",
"18654335533 67 18654335533\n",
"16605466518 68 16605466518\n",
"13706364787 69 13706364787\n",
"ok\n"
]
}
],
"source": [
"import openpyxl\n",
"import json\n",
"from datetime import date\n",
"\n",
"filename = 'data/东营老年大学.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"\n",
"\n",
"wb = openpyxl.load_workbook('data/东营老年大学电话.xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"person = {}\n",
"\n",
"for n in range(2, sheet.max_row+1):\n",
" code = str(sheet.cell(n, 3).value)\n",
" phone = sheet.cell(n, 1).value\n",
" if code in dict1.keys():\n",
" print(phone,code,dict1[code]['phone'])\n",
" dict1[code]['phone'] = phone\n",
" \n",
" \n",
"filename = 'data/东营老年大学.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(dict1, fl, ensure_ascii=False)\n",
"print('ok')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "26ef04ee-fdf4-40de-a3ed-30cba6525f06",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}