This commit is contained in:
512song committed 2023-10-05 21:13:48 +08:00
1 parent c602f3853c
commit 19dc6ed276
5 files changed
+469 -94

No files matched your search

+430 -56
View File
@@ -4,7 +4,6 @@
"cell_type": "markdown",
"id": "55644860-57e6-466b-b6e9-e6fdd807498d",
"metadata": {
"jp-MarkdownHeadingCollapsed": true,
"tags": []
},
"source": [
@@ -859,7 +858,9 @@
{
"cell_type": "markdown",
"id": "6ba73ead-6715-46a6-b4a9-3a00b733b151",
"metadata": {},
"metadata": {
"tags": []
},
"source": [
"## 导入学生信息"
]
@@ -913,28 +914,12 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": null,
"id": "3f1b2284-c39e-4dc2-bc0c-983fb8e3417f",
"metadata": {
"execution": {
"iopub.execute_input": "2023-09-16T11:56:29.189193Z",
"iopub.status.busy": "2023-09-16T11:56:29.188795Z",
"iopub.status.idle": "2023-09-16T11:56:29.210384Z",
"shell.execute_reply": "2023-09-16T11:56:29.209858Z",
"shell.execute_reply.started": "2023-09-16T11:56:29.189160Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"508\n",
"508\n"
]
}
],
"outputs": [],
"source": [
"import json\n",
"import time\n",
@@ -1047,37 +1032,12 @@
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": null,
"id": "6f4341d7-b836-4186-a4c6-370e9e207e0a",
"metadata": {
"execution": {
"iopub.execute_input": "2023-09-16T11:56:38.115567Z",
"iopub.status.busy": "2023-09-16T11:56:38.115110Z",
"iopub.status.idle": "2023-09-16T11:56:38.239480Z",
"shell.execute_reply": "2023-09-16T11:56:38.239046Z",
"shell.execute_reply.started": "2023-09-16T11:56:38.115531Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"8076\n",
"8113\n",
"8137\n",
"8228\n",
"8239\n",
"8283\n",
"8299\n",
"8416\n",
"8488\n",
"8504\n",
"ok\n"
]
}
],
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
@@ -1128,16 +1088,9 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": null,
"id": "04e27e02-7a69-42a8-a21a-61151a8a1427",
"metadata": {
"execution": {
"iopub.execute_input": "2023-09-16T11:58:41.367300Z",
"iopub.status.busy": "2023-09-16T11:58:41.366840Z",
"iopub.status.idle": "2023-09-16T11:58:41.486698Z",
"shell.execute_reply": "2023-09-16T11:58:41.486218Z",
"shell.execute_reply.started": "2023-09-16T11:58:41.367264Z"
},
"tags": []
},
"outputs": [],
@@ -1171,10 +1124,431 @@
"wb.save(filename)"
]
},
{
"cell_type": "markdown",
"id": "6cd42cb2-37a4-44e8-87cb-afd71b32e81f",
"metadata": {},
"source": [
"# 教师体测"
]
},
{
"cell_type": "markdown",
"id": "4ba29d0e-0af3-4c59-92cf-5c697ae20d16",
"metadata": {},
"source": [
"## 导入教师信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bc2b121a-948f-481a-b777-5879883d3c10",
"id": "93cc6471-36b5-43ce-9128-1c06768b0d01",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"\n",
"wb = openpyxl.load_workbook('data/教职工监测花名册.xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"person = {}\n",
"\n",
"for n in range(2, sheet.max_row+1):\n",
" if sheet.cell(n,1).value is not None:\n",
" code = int(sheet.cell(n, 4).value)\n",
" person.setdefault(code, {})\n",
" dict1 = {}\n",
" dict1['name'] = sheet.cell(n, 6).value\n",
" if int(sheet.cell(n, 7).value) ==1:\n",
" sex = '男'\n",
" else:\n",
" sex = '女'\n",
" dict1['sex'] = sex\n",
" birth = str(sheet.cell(n, 8).value).split()[0]\n",
" dict1['birth'] = birth\n",
" dict1['unit'] = sheet.cell(n, 3).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": "d2b61b63-2923-4fc9-ab0c-9ec8453760f2",
"metadata": {},
"source": [
"## 每日成绩导入"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "41ed428a-30bc-4150-bf74-e25228e1ca67",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"import csv\n",
"\n",
"filename = '../item.json'\n",
"item = {}\n",
"unit = {}\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for k,v in dict1.items():\n",
" item[k] = v\n",
"re_ta = {}\n",
"dict1 = {}\n",
"list1 = []\n",
"filename = 'data/长岭教师名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"\n",
"filename = 'data/places_result_20231005.csv'\n",
"with open(filename,'r',newline='') as csv_file:\n",
" fl = csv.reader(csv_file,delimiter=',')\n",
" header = next(fl) \n",
" for line in fl:\n",
" #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n",
" list1.append(line)\n",
"#print(list1)\n",
"for result in list1:\n",
" user = str(result[2])\n",
" if user in dict1.keys(): \n",
" m_item = str(result[3]) \n",
" re_ta.setdefault(user,{}) \n",
" re_ta[user]['name'] = dict1[user]['name']\n",
" re_ta[user]['sex'] = dict1[user]['sex'] \n",
" re_ta[user]['unit'] = dict1[user]['unit']\n",
" re_ta[user]['birth'] = dict1[user]['birth']\n",
" item_name = item[m_item]['name']\n",
" re_ta[user].setdefault(item_name,{}) \n",
" score = int(result[4])/item[m_item]['divisor'] \n",
" re_ta[user][item_name]['成绩'] = f'{score} {item[m_item][\"unit\"]}'\n",
"print(len(re_ta))\n",
"filename = 'data/result_长岭教师.json'\n",
"\n",
"with open(filename,'w') as fl:\n",
" json.dump(re_ta, fl, ensure_ascii=False) \n",
"print(len(re_ta))\n"
]
},
{
"cell_type": "markdown",
"id": "839bd6f9-f262-4640-99ea-2391caf63830",
"metadata": {},
"source": [
"## 计算人员年龄"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5e49f274-09d9-4eb6-ad4a-b70d217b6aa0",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import datetime\n",
"\n",
"filename = 'data/result_长岭教师.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"for k, v in dict1.items():\n",
" #print(k,v)\n",
" if '.' in v['birth']:\n",
" birth = v['birth'].split()[0].split('.')\n",
" else:\n",
" birth = v['birth'].split()[0].split('/')\n",
" \n",
" nian = int(birth[0].strip())\n",
" yue = int(birth[1].strip())\n",
" ri = int(birth[2].strip())\n",
" #print(k,nian,yue,ri)\n",
" days = (datetime.date(2023, 9, 11)-datetime.date(nian,yue,ri)).days\n",
" v['age'] = int(days/365)\n",
"filename = 'data/result_长岭教师.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl, ensure_ascii=False) \n",
"print('ok') "
]
},
{
"cell_type": "markdown",
"id": "8d0834c0-0cb7-4172-b01f-3ef8227e3d72",
"metadata": {},
"source": [
"## 计算测试得分"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "67fbefc0-a899-460d-a8c9-7d0633a33d7a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"\n",
"filename = '../item.json'\n",
"item = {}\n",
"unit = {}\n",
"with open(filename,'r') as fl:\n",
" dict3 = json.load(fl) \n",
"for k,v in dict3.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",
"filename = 'data/体质检测标准 (1).json' \n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"\n",
"\n",
"def cal_score(data1):\n",
" #data = {'name':'张三','sex':'M','age':37,'item':'StepExperiment','result':46} \n",
" person = dict1['person']\n",
" criteria = dict1['criteria'] \n",
" info = data1['sex']+str(data1['age'])\n",
" bz = person[info]\n",
" mx = criteria[bz][data1['item']]\n",
" result = data1['result'] \n",
" if data1['item'] == 'reaction':\n",
" for bz1 in mx:\n",
" if result > bz1:\n",
" #print(bz1)\n",
" score = mx.index(bz1,0)\n",
" break\n",
" else:\n",
" score = 5\n",
" else:\n",
" for bz1 in mx:\n",
" if result < bz1:\n",
" #print(bz1)\n",
" score = mx.index(bz1,0)\n",
" break\n",
" else:\n",
" score = 5\n",
" return(score)\n",
"filename = 'data/体质检测标准_BMI.json'\n",
"with open(filename,'r') as fl:\n",
" dict4 = json.load(fl) \n",
" \n",
"def cal_bmi(data1):\n",
" # data = {'name':'张三','sex':'M','age':37,'item':'HeightWeight','result':'177.7,97.0'}\n",
" person = dict4['person']\n",
" criteria = dict4['criteria']\n",
" \n",
" info = data1['sex']+str(data1['age'])\n",
" bz = person[info]\n",
" #print(bz)\n",
" result = data1['result']\n",
" print(result)\n",
" height = int(float(result.split(',')[0]))\n",
" weight = float(result.split(',')[1])\n",
" mx = criteria[bz][str(height)]\n",
" if weight < mx[0]:\n",
" score = 1\n",
" elif weight < mx[1]:\n",
" score = 3\n",
" elif weight < mx[2]:\n",
" score = 5 \n",
" elif weight <= mx[3]:\n",
" score = 3 \n",
" elif weight > mx[3]:\n",
" score = 1\n",
" return score\n",
" \n",
" \n",
"\n",
"#list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','height','weight']\n",
"list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp']\n",
"filename = 'data/result_长岭教师.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl) \n",
"for k, v in dict2.items():\n",
" if v['sex'] == '男':\n",
" sex = 'M'\n",
" else:\n",
" sex = 'F' \n",
" if 'height' in v.keys() and 'weight' in v.keys():\n",
" bmi_data = v['height']['成绩'].split()[0]+','+ v['weight']['成绩'].split()[0]\n",
" data1 = {'sex':sex,'age':v['age'],'item':'HeightWeight','result':bmi_data}\n",
" dict2[k]['bmi'] = {}\n",
" dict2[k]['bmi']['成绩'] = bmi_data\n",
" dict2[k]['bmi']['score'] = cal_bmi(data1)\n",
" for item_en in list_item:\n",
" if item_en in v.keys(): \n",
" data1 = {'sex':sex,'age':v['age'],'item':item_en,'result':float(v[item_en]['成绩'].split()[0])}\n",
" dict2[k][item_en]['score'] = cal_score(data1)\n",
" #print(k,v[item_en]['成绩'],cal_score(data1))\n",
"\n",
"filename = f'data/result_长岭教师.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict2,fl , ensure_ascii=False) \n",
"print('ok!') "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fc43f558-a22d-4872-bca1-f87066ab4fe4",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "a26bb4e2-106f-4e72-b102-7141fdf23f85",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"\n",
"list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']\n",
"filename = 'data/result_长岭教师.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for k,v in dict1.items():\n",
" print(k)\n",
" score = 0\n",
" i = 0 \n",
" for k1,v1 in v.items(): \n",
" if k1 in list_item:\n",
" score = score + int(v1['score'])\n",
" i+=1\n",
" dict1[k]['score'] = round(score/i,2) \n",
"\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl, ensure_ascii=False) \n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "970ac26e-6db4-4457-aa85-d672373c9479",
"metadata": {},
"source": [
"## 计算平均成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "861a91f2-6256-4713-8028-6d6aae3b917d",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"filename = f'data/result_长岭教师.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"i = 1\n",
"m = 0\n",
"f = 0\n",
"score = 0\n",
"t_score = 0\n",
"for k,v in dict1.items():\n",
" if v['sex'] == '男':\n",
" m = m +1\n",
" score = score+v['score']\n",
"print(f'平均成绩:{round(score/m,4)}分,男性:{m}人')\n",
"t_score = t_score + score\n",
"score = 0\n",
"for k,v in dict1.items():\n",
" if v['sex'] == '女':\n",
" f = f +1\n",
" score = score+v['score']\n",
"print(f'平均成绩:{round(score/f,4)}分,女性:{f}人')\n",
"t_score = t_score + score\n",
"print(f'平均成绩:{round(t_score/38,4)}分,总体:38人')"
]
},
{
"cell_type": "markdown",
"id": "db9ba2e8-a7b0-472f-84c2-84872643a385",
"metadata": {},
"source": [
"## 计算各项目平均成绩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5f112c32-5402-4fe9-b737-2c9c65ba0d49",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"filename = f'data/result_长岭教师.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"i = 1\n",
"m = 0\n",
"f = 0\n",
"score = 0\n",
"t_score = 0\n",
"list_item = ['lung','flexion','reaction','bmi']\n",
"for item in list_item:\n",
" m = 0\n",
" f = 0\n",
" score = 0\n",
" t_score = 0\n",
" for k,v in dict1.items():\n",
" if v['sex'] == '男' and item in v.keys():\n",
" m = m +1\n",
" score = score+v['score']\n",
" print(f'{item}平均成绩:{round(score/m,4)}分,男性:{m}人')\n",
" t_score = t_score + score\n",
" score = 0\n",
" for k,v in dict1.items():\n",
" if v['sex'] == '女' and item in v.keys():\n",
" f = f +1\n",
" score = score+v['score']\n",
" print(f'{item}平均成绩:{round(score/f,4)}分,女性:{f}人')\n",
" t_score = t_score + score\n",
" print(f'{item}平均成绩:{round(t_score/(f+m),4)}分,总体:{f+m}人')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bb9c6bf3-8f84-4290-a60c-710517a399d5",
"metadata": {},
"outputs": [],
"source": []