{ "cells": [ { "cell_type": "markdown", "id": "19280f5c-8e34-4a64-8dfb-6353cbf597d2", "metadata": { "tags": [], "toc-hr-collapsed": true }, "source": [ "# 体质检测数据处理" ] }, { "cell_type": "markdown", "id": "112d80f4-607b-41f9-bb30-ac2eb8f52ee2", "metadata": { "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ "## 基础数据管理" ] }, { "cell_type": "markdown", "id": "b7dfd50f-a614-497d-8f0a-fa1e4c89168a", "metadata": {}, "source": [ "### 体测项目标准导入" ] }, { "cell_type": "code", "execution_count": null, "id": "8cd73044-56a8-409b-a873-085feb63af17", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "tcbz ={\n", " 'HeightWeigh':'身高体重',\n", " 'StepExperiment':'台阶指数',\n", " 'Lung':'肺活量',\n", " 'Proneness':'坐位体前屈',\n", " 'PowerfullGrip':'握力',\n", " 'OneMinutePushUp':'一分钟仰卧起坐',\n", " 'PushUp':'俯卧撑',\n", " 'VerticalJump':'纵跳',\n", " 'ReactionTime':'选择反应时',\n", " 'FootStand':'单脚站立'\n", "}\n", "wb = openpyxl.load_workbook('data/体质检测标准.xlsx')\n", "sheet = wb.active\n", "# sheets = wb.sheetnames\n", "dict1 = {}\n", "dict3 = {}\n", "for k, v in tcbz.items():\n", " dict3[v] = k\n", "sheet = wb.active\n", "data1 =list(sheet.values)\n", "del data1[0]\n", "for item in data1:\n", " sex = item[0][6:]\n", " if sex =='男':\n", " age_sex = 'M'+item[0][:5]\n", " else:\n", " age_sex = 'F'+item[0][:5]\n", " dict1.setdefault(age_sex,{})\n", " if item[1] in dict3.keys():\n", " xm = dict3[item[1]]\n", " dict1[age_sex].setdefault(xm,[])\n", " dict1[age_sex][xm].append(item[3]/item[4])\n", "dict2 = {}\n", "#print(dict1)\n", "for k, v in dict1.items():\n", " i1 = int(k[1:3])\n", " i2 = int(k[-2:])\n", " m_sex = k[:1]\n", " for i in range(i1,i2+1):\n", " dict2[m_sex+str(i)] = k\n", "dict3 = {}\n", "dict3['person'] = dict2\n", "dict3['criteria'] = dict1\n", "filename = 'data/体质检测标准.json'\n", "with open(filename, 'w') as fl:\n", " json.dump(dict3, fl, ensure_ascii=False)\n", "print('ok')" ] }, { "cell_type": "markdown", "id": "c36641d8-c54b-43d2-ad9d-ff4cb72deba9", "metadata": {}, "source": [ "### 身高标准导入" ] }, { "cell_type": "code", "execution_count": null, "id": "2ca52d7b-d77e-452f-98f6-95072a5a1934", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "tcbz ={\n", " 'HeightWeigh':'身高体重',\n", " 'StepExperiment':'台阶指数',\n", " 'Lung':'肺活量',\n", " 'Proneness':'坐位体前屈',\n", " 'PowerfullGrip':'握力',\n", " 'OneMinutePushUp':'一分钟仰卧起坐',\n", " 'PushUp':'俯卧撑',\n", " 'VerticalJump':'纵跳',\n", " 'ReactionTime':'选择反应时',\n", " 'FootStand':'单脚站立'\n", "}\n", "wb = openpyxl.load_workbook('data/体质检测标准_BMI.xlsx')\n", "sheet = wb.active\n", "# sheets = wb.sheetnames\n", "dict1 = {}\n", "dict3 = {}\n", "for k, v in tcbz.items():\n", " dict3[v] = k\n", "sheet = wb.active\n", "data1 =list(sheet.values)\n", "del data1[0]\n", "for item in data1:\n", " min_age = int(item[1]/12)\n", " max_age = int((item[2]+1)/12) - 1\n", " sex = item[0]\n", " height = int(item[3])\n", " if sex ==0:\n", " age_sex = 'M'+str(min_age)+'~'+str(max_age)\n", " else:\n", " age_sex = 'F'+str(min_age)+'~'+str(max_age)\n", " dict1.setdefault(age_sex,{})\n", " \n", " dict1[age_sex].setdefault(height,[])\n", " dict1[age_sex][height].append(item[5]/1000)\n", "dict2 = {}\n", "#print(dict1)\n", "for k, v in dict1.items():\n", " i1 = int(k[1:3])\n", " i2 = int(k[-2:])\n", " m_sex = k[:1]\n", " for i in range(i1,i2+1):\n", " dict2[m_sex+str(i)] = k\n", "dict3 = {}\n", "dict3['person'] = dict2\n", "dict3['criteria'] = dict1\n", "filename = 'data/体质检测标准_BMI.json'\n", "with open(filename, 'w') as fl:\n", " json.dump(dict3, fl, ensure_ascii=False)\n", "print('ok')" ] }, { "cell_type": "markdown", "id": "59f5708d-c2d0-4470-b2f4-b9face431865", "metadata": {}, "source": [ "### 计算分数" ] }, { "cell_type": "code", "execution_count": null, "id": "f32b266a-7e46-4703-ab61-7cbbc81b5ab1", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import time\n", "import csv\n", "\n", "filename = 'data/体质检测标准.json'\n", "item = {}\n", "unit = {}\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "person = dict1['person']\n", "criteria = dict1['criteria']\n", "data = {'name':'张三','sex':'M','age':37,'item':'StepExperiment','result':46}\n", "info = data['sex']+str(data['age'])\n", "bz = person[info]\n", "mx = criteria[bz][data['item']]\n", "result = data['result']\n", "score = -1\n", "print(mx)\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", "#if score == -1:\n", " # score = 5\n", "print(score)" ] }, { "cell_type": "markdown", "id": "755f8b66-c71c-4138-bd12-dff24e85e36a", "metadata": {}, "source": [ "### 计算BMI分数" ] }, { "cell_type": "code", "execution_count": null, "id": "b32fbbdd-eb0a-4f0d-8901-e39a727c3ff8", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import time\n", "import csv\n", "\n", "filename = 'data/体质检测标准_BMI.json'\n", "item = {}\n", "unit = {}\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "person = dict1['person']\n", "criteria = dict1['criteria']\n", "data = {'name':'张三','sex':'M','age':37,'item':'HeightWeight','result':'177.7,97.0'}\n", "info = data['sex']+str(data['age'])\n", "\n", "bz = person[info]\n", "print(bz)\n", "result = data['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", "print(score)" ] }, { "cell_type": "markdown", "id": "7fe0ffe8-c3d1-4843-9765-87d4a12b7c39", "metadata": {}, "source": [ "## 体测报告生成" ] }, { "cell_type": "markdown", "id": "9fec0bfc-8a97-446f-95fe-6e9cf8e482d8", "metadata": {}, "source": [ "### 转换报告格式" ] }, { "cell_type": "code", "execution_count": null, "id": "3e614f4a-a623-48e2-97f8-b31f62c9a983", "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_20231018.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 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", " #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": "6741916c-deb6-496f-bc8f-5248e107e0e9", "metadata": {}, "source": [ "### 生成完善得分" ] }, { "cell_type": "code", "execution_count": null, "id": "141b30dc-5975-4dcb-9bc3-9b20d26a0917", "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", " if data1['age'] >59:\n", " data1['age'] = 59\n", " if data1['age'] <20:\n", " data1['age'] = 20\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", " if data1['age'] > 59:\n", " data1['age'] = 59\n", " if data1['age'] <20:\n", " data1['age'] = 20\n", " info = data1['sex']+str(data1['age'])\n", " bz = person[info]\n", " #print(bz)\n", " result = data1['result']\n", " #print(data1['code'],result)\n", " height = int(float(result.split(',')[0]))\n", " weight = float(result.split(',')[1])\n", " if str(height) not in criteria[bz]:\n", " score = 1\n", " else: \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", " #print(k)\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 = {'code':k,'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 = {'code':k,'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": "markdown", "id": "cf8f168e-4161-4fbb-bf5f-f9d1cb9bbb6f", "metadata": {}, "source": [ "### 生成报告清单" ] }, { "cell_type": "code", "execution_count": null, "id": "f20224aa-2131-473d-a0ec-0743482ed58e", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "\n", "filename = 'data/result_天津231017.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "dict2 = {}\n", "list2 = []\n", "i= 1\n", "p= 1\n", "for k, v in dict1.items():\n", " list2.append(k)\n", " i+=1\n", " if i>200:\n", " dict2[p] = list2\n", " p+=1\n", " i = 1\n", " list2 = []\n", "dict2[p] = list2\n", "filename = f'data/报告清单.json'\n", "with open(filename,'w') as fl:\n", " json.dump(dict2,fl , ensure_ascii=False) \n", "print('ok!') " ] }, { "cell_type": "markdown", "id": "ceef0742-f62a-4a7d-b0d5-be7ae7abb741", "metadata": {}, "source": [ "### 生成报告" ] }, { "cell_type": "code", "execution_count": 36, "id": "b123ee6b-85d2-4660-b226-321832a6b796", "metadata": { "execution": { "iopub.execute_input": "2023-11-09T10:50:53.885635Z", "iopub.status.busy": "2023-11-09T10:50:53.885173Z", "iopub.status.idle": "2023-11-09T10:51:56.863145Z", "shell.execute_reply": "2023-11-09T10:51:56.862475Z", "shell.execute_reply.started": "2023-11-09T10:50:53.885587Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "27\n", "01731841 由慧敏 {\"errmsg\":\"ok\"}\n", "01731897 张锦民 {\"errmsg\":\"ok\"}\n", "03318722 高园苹 {\"errmsg\":\"ok\"}\n", "03286622 高令臻 {\"errmsg\":\"ok\"}\n", "01730872 于世建 {\"errmsg\":\"ok\"}\n", "01732172 吕铁军 {\"errmsg\":\"ok\"}\n", "01732111 于晓冬 {\"errmsg\":\"ok\"}\n", "01731828 张宝群 {\"errmsg\":\"ok\"}\n", "03417182 王品航 {\"errmsg\":\"ok\"}\n", "03505733 冯佳怡 {\"errmsg\":\"ok\"}\n", "01731811 张绍俊 {\"errmsg\":\"ok\"}\n", "03532499 陈武 {\"errmsg\":\"ok\"}\n", "03532486 常新浩 {\"errmsg\":\"ok\"}\n", "03532452 梁衍鹏 {\"errmsg\":\"ok\"}\n", "03532538 孔沫梵 {\"errmsg\":\"ok\"}\n", "01732119 张魁强 {\"errmsg\":\"ok\"}\n", "03416970 叶森 {\"errmsg\":\"ok\"}\n", "01731941 袁令江 {\"errmsg\":\"ok\"}\n", "01731872 高健 {\"errmsg\":\"ok\"}\n", "01730751 仉越 {\"errmsg\":\"ok\"}\n", "03440626 祝千慧 {\"errmsg\":\"ok\"}\n", "03499403 王天来 {\"errmsg\":\"ok\"}\n", "01730921 李卫东 {\"errmsg\":\"ok\"}\n", "03499450 王文静 {\"errmsg\":\"ok\"}\n", "01731009 李富来 {\"errmsg\":\"ok\"}\n", "01730916 康静敏 {\"errmsg\":\"ok\"}\n", "01730917 张长权 {\"errmsg\":\"ok\"}\n", "03532462 杨子瑞 {\"errmsg\":\"ok\"}\n", "01731580 程斌 {\"errmsg\":\"ok\"}\n", "03318714 薛崇博 {\"errmsg\":\"ok\"}\n", "01732150 张志成 {\"errmsg\":\"ok\"}\n", "03499425 金添 {\"errmsg\":\"ok\"}\n", "01730953 俎惠广 {\"errmsg\":\"ok\"}\n", "03416977 田甜 {\"errmsg\":\"ok\"}\n", "01732076 韦京山 {\"errmsg\":\"ok\"}\n", "01731043 冯强 {\"errmsg\":\"ok\"}\n", "03417334 刘凌羽 {\"errmsg\":\"ok\"}\n", "03468273 康智皓 {\"errmsg\":\"ok\"}\n", "03499370 纪旭 {\"errmsg\":\"ok\"}\n", "01732063 于娜 {\"errmsg\":\"ok\"}\n", "03505725 邢世成 {\"errmsg\":\"ok\"}\n", "03417374 魏魁 {\"errmsg\":\"ok\"}\n", "03468256 刘涛 {\"errmsg\":\"ok\"}\n", "03417353 李强 {\"errmsg\":\"ok\"}\n", "03532476 高泽文 {\"errmsg\":\"ok\"}\n", "03417357 王宁 {\"errmsg\":\"ok\"}\n", "03499380 程鑫锐 {\"errmsg\":\"ok\"}\n", "03532480 马海涛 {\"errmsg\":\"ok\"}\n", "03532509 隋雅婧 {\"errmsg\":\"ok\"}\n", "01731268 满宝祥 {\"errmsg\":\"ok\"}\n", "01739828 白云 {\"errmsg\":\"ok\"}\n", "03417368 郑家宝 {\"errmsg\":\"ok\"}\n", "01731598 李诚 {\"errmsg\":\"ok\"}\n", "01739588 胡伟民 {\"errmsg\":\"ok\"}\n", "03417365 赵欣磊 {\"errmsg\":\"ok\"}\n", "03499356 李日笙 {\"errmsg\":\"ok\"}\n", "03532442 马涛 {\"errmsg\":\"ok\"}\n", "03417338 吕兆鑫 {\"errmsg\":\"ok\"}\n", "03532834 孙纳川 {\"errmsg\":\"ok\"}\n", "03532829 魏禹涵 {\"errmsg\":\"ok\"}\n", "03468291 李强 {\"errmsg\":\"ok\"}\n", "01730808 申玉红 {\"errmsg\":\"ok\"}\n", "01731155 窦国生 {\"errmsg\":\"ok\"}\n", "03131181 付中杰 {\"errmsg\":\"ok\"}\n", "03468350 赵庆学 {\"errmsg\":\"ok\"}\n", "01730960 刘淑敏 {\"errmsg\":\"ok\"}\n", "01730675 高建军 {\"errmsg\":\"ok\"}\n", "01739635 李刚 {\"errmsg\":\"ok\"}\n", "01731900 宋斌 {\"errmsg\":\"ok\"}\n", "03499398 潘瑾雯 {\"errmsg\":\"ok\"}\n", "03172811 郭通 {\"errmsg\":\"ok\"}\n", "03417217 安琪 {\"errmsg\":\"ok\"}\n", "03318717 赵珊珊 {\"errmsg\":\"ok\"}\n", "01730663 畅淮勇 {\"errmsg\":\"ok\"}\n", "01730871 范炳凯 {\"errmsg\":\"ok\"}\n", "01731855 高华贤 {\"errmsg\":\"ok\"}\n", "01730753 赵彤芬 {\"errmsg\":\"ok\"}\n", "01730737 张宝忠 {\"errmsg\":\"ok\"}\n", "01731848 侯文靖 {\"errmsg\":\"ok\"}\n", "01731930 薛少贤 {\"errmsg\":\"ok\"}\n", "03499447 李佳瑶 {\"errmsg\":\"ok\"}\n", "03499463 张明言 {\"errmsg\":\"ok\"}\n", "03499373 曹金旭 {\"errmsg\":\"ok\"}\n", "01731107 张长恒 {\"errmsg\":\"ok\"}\n", "01730813 刘津 {\"errmsg\":\"ok\"}\n", "01731868 冯庆军 {\"errmsg\":\"ok\"}\n", "01101061 刘伟 {\"errmsg\":\"ok\"}\n", "01730739 张长顺 {\"errmsg\":\"ok\"}\n", "01732716 龚磊 {\"errmsg\":\"ok\"}\n", "01731820 张劲松 {\"errmsg\":\"ok\"}\n", "01732055 赵晓群 {\"errmsg\":\"ok\"}\n", "01731036 董振民 {\"errmsg\":\"ok\"}\n", "01730704 马龙 {\"errmsg\":\"ok\"}\n", "03362196 符天说 {\"errmsg\":\"ok\"}\n", "03468331 王蕾 {\"errmsg\":\"ok\"}\n", "01731859 张伟 {\"errmsg\":\"ok\"}\n", "01731641 王庆池 {\"errmsg\":\"ok\"}\n", "01730720 吴俊斌 {\"errmsg\":\"ok\"}\n", "03391162 杨佳坤 {\"errmsg\":\"ok\"}\n", "01730818 杨宝强 {\"errmsg\":\"ok\"}\n", "03391147 屈松 {\"errmsg\":\"ok\"}\n", "01731255 宋清木 {\"errmsg\":\"ok\"}\n", "01732083 周幸旗 {\"errmsg\":\"ok\"}\n", "01731283 侯聚现 {\"errmsg\":\"ok\"}\n", "03532456 黄蓓蓓 {\"errmsg\":\"ok\"}\n", "01730934 周荣光 {\"errmsg\":\"ok\"}\n", "01553958 李阳 {\"errmsg\":\"ok\"}\n", "03391181 阎旭 {\"errmsg\":\"ok\"}\n", "03505726 陈冰倩 {\"errmsg\":\"ok\"}\n", "03468289 曲治儒 {\"errmsg\":\"ok\"}\n", "03362168 张瑞 {\"errmsg\":\"ok\"}\n", "03532474 商雨晴 {\"errmsg\":\"ok\"}\n", "03532448 林子茹 {\"errmsg\":\"ok\"}\n", "03532511 宋子扬 {\"errmsg\":\"ok\"}\n", "01732190 赵超 {\"errmsg\":\"ok\"}\n", "01731901 杨炳利 {\"errmsg\":\"ok\"}\n", "01731007 张利民 {\"errmsg\":\"ok\"}\n", "01731271 王建璋 {\"errmsg\":\"ok\"}\n", "03362201 袁晓东 {\"errmsg\":\"ok\"}\n", "01730670 丁树全 {\"errmsg\":\"ok\"}\n", "01731627 石洪兴 {\"errmsg\":\"ok\"}\n", "01732691 费楠 {\"errmsg\":\"ok\"}\n", "03499384 马永才 {\"errmsg\":\"ok\"}\n", "03417366 邹治美 {\"errmsg\":\"ok\"}\n", "03499376 刘宇婷 {\"errmsg\":\"ok\"}\n", "01731902 薛新亮 {\"errmsg\":\"ok\"}\n", "01735421 姚庆麟 {\"errmsg\":\"ok\"}\n", "01732273 李洪菊 {\"errmsg\":\"ok\"}\n", "01731229 刘风松 {\"errmsg\":\"ok\"}\n", "01731887 刘欣 {\"errmsg\":\"ok\"}\n", "03499375 刘乃震 {\"errmsg\":\"ok\"}\n", "03417373 魏文波 {\"errmsg\":\"ok\"}\n", "01732706 袁守朝 {\"errmsg\":\"ok\"}\n", "01730939 付秋杰 {\"errmsg\":\"ok\"}\n", "03468345 薛婷婷 {\"errmsg\":\"ok\"}\n", "03468253 刘宇乐 {\"errmsg\":\"ok\"}\n", "01732688 刘山虎 {\"errmsg\":\"ok\"}\n", "01732228 李文彬 {\"errmsg\":\"ok\"}\n", "01732675 贾成龙 {\"errmsg\":\"ok\"}\n", "03286615 王小康 {\"errmsg\":\"ok\"}\n", "01732225 剧海峰 {\"errmsg\":\"ok\"}\n", "01732179 张彬 {\"errmsg\":\"ok\"}\n", "01730970 高川 {\"errmsg\":\"ok\"}\n", "01730682 郝介华 {\"errmsg\":\"ok\"}\n", "01732668 赵健 {\"errmsg\":\"ok\"}\n", "01731657 张兆茹 {\"errmsg\":\"ok\"}\n", "01731258 周玲 {\"errmsg\":\"ok\"}\n", "01731893 王连喜 {\"errmsg\":\"ok\"}\n", "03499428 王博 {\"errmsg\":\"ok\"}\n", "03499353 闫馨雨 {\"errmsg\":\"ok\"}\n", "01730738 张博宇 {\"errmsg\":\"ok\"}\n", "01731669 蒋春 {\"errmsg\":\"ok\"}\n", "01731246 张鸿志 {\"errmsg\":\"ok\"}\n", "01731614 刘元春 {\"errmsg\":\"ok\"}\n", "01731917 杨宝杰 {\"errmsg\":\"ok\"}\n", "01731199 邓平 {\"errmsg\":\"ok\"}\n", "01730680 韩永利 {\"errmsg\":\"ok\"}\n", "03440611 张芮芮 {\"errmsg\":\"ok\"}\n", "03505747 刘世尧 {\"errmsg\":\"ok\"}\n", "03391105 黄婷婷 {\"errmsg\":\"ok\"}\n", "03499420 秦学森 {\"errmsg\":\"ok\"}\n", "01730807 郭强 {\"errmsg\":\"ok\"}\n", "01731867 李津 {\"errmsg\":\"ok\"}\n", "03499399 佟嘉航 {\"errmsg\":\"ok\"}\n", "03499390 朱丽丽 {\"errmsg\":\"ok\"}\n", "03417136 李智 {\"errmsg\":\"ok\"}\n", "01730691 李树国 {\"errmsg\":\"ok\"}\n", "01731197 刘佩志 {\"errmsg\":\"ok\"}\n", "03499357 张泽贤 {\"errmsg\":\"ok\"}\n", "03505738 杨柳 {\"errmsg\":\"ok\"}\n", "03499417 王雪婧 {\"errmsg\":\"ok\"}\n", "01730838 李占英 {\"errmsg\":\"ok\"}\n", "01731865 韩勇 {\"errmsg\":\"ok\"}\n", "01730834 张智超 {\"errmsg\":\"ok\"}\n", "01739719 张颖 {\"errmsg\":\"ok\"}\n", "03505740 王颖郅 {\"errmsg\":\"ok\"}\n", "03505751 梁芳珍 {\"errmsg\":\"ok\"}\n", "03505744 孙丽敏 {\"errmsg\":\"ok\"}\n", "03505745 孙隆凯 {\"errmsg\":\"ok\"}\n", "03362149 刘宏 {\"errmsg\":\"ok\"}\n", "03499364 张启涵 {\"errmsg\":\"ok\"}\n", "03417003 任绪龙 {\"errmsg\":\"ok\"}\n", "03417172 宋超 {\"errmsg\":\"ok\"}\n", "03505739 武林芳 {\"errmsg\":\"ok\"}\n", "03468335 田思佳 {\"errmsg\":\"ok\"}\n", "03468333 王鹏 {\"errmsg\":\"ok\"}\n", "03145582 贾羽翀 {\"errmsg\":\"ok\"}\n", "03417174 李金良 {\"errmsg\":\"ok\"}\n", "01730935 石永新 {\"errmsg\":\"ok\"}\n", "01731843 侯玉军 {\"errmsg\":\"ok\"}\n", "03468309 杨政辰 {\"errmsg\":\"ok\"}\n", "01731264 温丽强 {\"errmsg\":\"ok\"}\n", "01739606 宋文生 {\"errmsg\":\"ok\"}\n", "01731028 李连军 {\"errmsg\":\"ok\"}\n" ] } ], "source": [ "import requests\n", "import json\n", "import openpyxl\n", "\n", "\n", "headers = {\n", " \"Content-Type\": \"application/json; charset=UTF-8\"\n", " }\n", "filename = 'data/result_天津231017.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "list1 = []\n", "fiie_path ='./134/'\n", "list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']\n", "i=1\n", "list2 = []\n", "for k, v in dict1.items():\n", " list1 = []\n", " mydata = {}\n", " \n", " id = str(k).rjust(8,\"0\")\n", " mydata['path'] = fiie_path+id+'-'+ v['name']+'.pdf'\n", " mydata['title'] = '中石化(天津)石油化工\\n有限公司'\n", " mydata['subtitle'] = v['unit']\n", " mydata['id'] = id\n", " mydata['name'] = v['name']\n", " if v['sex'] == '男':\n", " mydata['gender'] = 'male'\n", " else:\n", " mydata['gender'] = 'female'\n", " \n", " mydata['month'] = v['month']\n", " mydata['fits'] = {}\n", " for item in list_item:\n", " if item in v.keys():\n", " if item in ['lung','pushup','step','situp']:\n", " mark = v[item]['成绩'].split()[0].split('.')[0]\n", " else:\n", " mark = v[item]['成绩'].split()[0]\n", " mydata['fits'][item] = {'mark':mark,'score':v[item]['score']}\n", " if len(mydata['fits']) >2:\n", " \n", " list1.append(mydata)\n", " list2.append([k,v['name']])\n", " i+=1\n", " x = requests.post('http://localhost:3003', data = json.dumps(list1), headers=headers)\n", " #print(id,v['name'],x.text)\n", " #x.close()\n", "print(i)" ] }, { "cell_type": "markdown", "id": "732161bb-98f2-4861-ab66-7a374678bcd8", "metadata": { "jp-MarkdownHeadingCollapsed": true, "tags": [], "toc-hr-collapsed": true }, "source": [ "# 体质检测数据管理" ] }, { "cell_type": "markdown", "id": "bb2db5e8-5dc6-4366-a39c-a3600ee5007c", "metadata": {}, "source": [ "## 数据导入Mycrm" ] }, { "cell_type": "markdown", "id": "bc98d772-5841-41a3-ad8f-f7d1ff3b5fde", "metadata": {}, "source": [ "### 导入系统人员信息" ] }, { "cell_type": "code", "execution_count": null, "id": "2cd93f45-6613-4a3f-97e4-5236068e1860", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import time\n", "import csv\n", "\n", "list1 = []\n", "filename = 'data/person_134.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", "dict1 = {}\n", "for result in list1:\n", " code = str(result[4])\n", " if int(result[1]) == 0:\n", " sex = '男'\n", " else:\n", " sex = '女'\n", " \n", " m_item = str(result[3]) \n", " dict1.setdefault(code,{}) \n", " dict1[code]['name'] = result[0]\n", " dict1[code]['sex'] = sex\n", " dict1[code]['birth'] = result[2]\n", "filename = 'data/天津石化人员清单.json'\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl, ensure_ascii=False) \n", "print(len(dict1)) " ] }, { "cell_type": "markdown", "id": "2eb50f19-c15f-4a36-87b7-cd02551d248d", "metadata": {}, "source": [ "### 导入测试项目item" ] }, { "cell_type": "code", "execution_count": null, "id": "0eb37435-9c15-40ef-bd4c-2dffc026f59e", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import psycopg2\n", "from psycopg2 import extras as ex\n", "\n", "filename = '../item.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "data_list = []\n", "for k, v in dict1.items():\n", " data_list.append((int(k),v['name'])) \n", "conn = psycopg2.connect(database=\"mycrm\", user=\"postgres\", password=\"songyi\", host=\"localhost\", port=\"5432\")\n", "cursor = conn.cursor()\n", "sql = 'insert into shijiazhuang_item (id,name) values %s'\n", "ex.execute_values(cursor, sql, data_list, page_size=10000)\n", "#conn.commit()\n", "cursor.close()\n", "conn.close()\n", "print('ok!')" ] }, { "cell_type": "markdown", "id": "2ba97298-1e7e-4192-8d69-ea59f98e071a", "metadata": {}, "source": [ "### 导入一级部门" ] }, { "cell_type": "code", "execution_count": null, "id": "9f7ed380-95f3-47d4-9eb5-74937af7811f", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import psycopg2\n", "from psycopg2 import extras as ex\n", "\n", "conn = psycopg2.connect(database=\"mycrm\", user=\"postgres\", password=\"songyi\", host=\"localhost\", port=\"5432\")\n", "cursor = conn.cursor()\n", "filename = 'data/result_石家庄.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "unit = set()\n", "for k, v in dict1.items():\n", " #if 'sub_unit' not in v.keys():\n", " # print(k,v['name'])\n", " unit.add(v['unit'])\n", "print(unit) \n", "i = 1\n", "dict2 = {}\n", "for item in unit:\n", " dict2[item] = i\n", " i+=1\n", "data_list = []\n", "for k, v in dict2.items():\n", " data_list.append((v,k)) \n", " \n", "sql = 'insert into shijiazhuang_unit (id,name) values %s'\n", "ex.execute_values(cursor, sql, data_list, page_size=10000)\n", "#conn.commit()\n", "cursor.close()\n", "conn.close()\n", "print('ok!')" ] }, { "cell_type": "markdown", "id": "b8a1fa7f-08ff-49bb-8052-9f86b1f2ac18", "metadata": {}, "source": [ "### 导入二级部门" ] }, { "cell_type": "code", "execution_count": null, "id": "a13e81f2-467f-42c7-bb46-b547ef7bdd6c", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import psycopg2\n", "from psycopg2 import extras as ex\n", "\n", "conn = psycopg2.connect(database=\"mycrm\", user=\"postgres\", password=\"songyi\", host=\"localhost\", port=\"5432\")\n", "cursor = conn.cursor()\n", "filename = 'data/天津石化人员名单.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "unit = set()\n", "for k, v in dict1.items():\n", " #if 'sub_unit' not in v.keys():\n", " # print(k,v['name'])\n", " unit.add(v['unit'])\n", "print(unit) \n", "i = 1\n", "dict2 = {}\n", "for item in unit:\n", " dict2[item] = i\n", " i+=1\n", "data_list = []\n", "dict3 = {}\n", "for k, v in dict1.items():\n", " dict3.setdefault(v['unit'],set())\n", " dict3[v['unit']].add(v['sub_unit'])\n", "i = 1 \n", "for k, v in dict3.items():\n", " unit_id = dict2[k]\n", " for item in v:\n", " data_list.append((i,item,unit_id))\n", " i+=1\n", "sql = 'insert into tianjin_sub_unit (id,name,unit_id) values %s'\n", "ex.execute_values(cursor, sql, data_list, page_size=10000)\n", "#conn.commit()\n", "cursor.close()\n", "conn.close()\n", "print('ok!')" ] }, { "cell_type": "markdown", "id": "12917000-59e0-4f8a-beee-929c6d7b60a0", "metadata": {}, "source": [ "### 生成部门JSON文件" ] }, { "cell_type": "code", "execution_count": null, "id": "5446269c-d324-4a16-b10e-f24d87178d77", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import csv\n", "\n", "dict1 = {}\n", "filename = 'data/shijiazhuang_unit_20230517.csv'\n", "with open(filename,'r',newline='') as csv_file:\n", " fl = csv.reader(csv_file,delimiter=',')\n", " header = next(fl)\n", " list1 = []\n", " for line in fl:\n", " #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n", " list1.append({'id':int(line[0]),'name':line[1]})\n", "dict1['unit'] = list1\n", "\n", "filename = 'data/sub_unit_134.csv'\n", "with open(filename,'r',newline='') as csv_file:\n", " fl = csv.reader(csv_file,delimiter=',')\n", " header = next(fl)\n", " list1 = []\n", " for line in fl:\n", " #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n", " list1.append({'id':int(line[0]),'name':line[1],'unit_id':int(line[2])})\n", "dict1['sub_unit'] = list1\n", "print(dict1)\n", "\n", "filename = 'data/天津石化部门.json'\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl, ensure_ascii=False) \n", "print(len(dict1)) " ] }, { "cell_type": "code", "execution_count": null, "id": "5e57329d-a0ef-47b2-9866-fe2a911ff01d", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import csv\n", "\n", "dict1 = {}\n", "filename = 'data/shijiazhuang_unit_20230517.csv'\n", "with open(filename,'r',newline='') as csv_file:\n", " fl = csv.reader(csv_file,delimiter=',')\n", " header = next(fl)\n", " list1 = []\n", " for line in fl:\n", " #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n", " list1.append({'id':int(line[0]),'name':line[1]})\n", " dict1[int(line[0])] = line[1]\n", "\n", "\n", "filename = 'data/石家庄石化部门.json'\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl, ensure_ascii=False) \n", "print(len(dict1)) " ] }, { "cell_type": "markdown", "id": "53bf98fe-0ae9-402f-b8d8-495e8f31df3d", "metadata": {}, "source": [ "### 导入人员信息" ] }, { "cell_type": "code", "execution_count": null, "id": "6af82fd2-b1d6-44b7-8b13-58883b58f8b0", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import psycopg2\n", "from psycopg2 import extras as ex\n", "\n", "conn = psycopg2.connect(database=\"mycrm\", user=\"postgres\", password=\"songyi\", host=\"localhost\", port=\"5432\")\n", "cursor = conn.cursor()\n", "filename = 'data/天津石化人员清单.json'\n", "with open(filename,'r') as fl:\n", " person = json.load(fl)\n", " \n", "filename = 'data/石家庄石化部门.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "i = 1\n", "dict2 = {}\n", "for item in unit:\n", " dict2[item] = i\n", " i+=1\n", "data_list = []\n", "dict3 = {}\n", "dict4 = {}\n", "for k, v in dict1.items():\n", " dict3.setdefault(v['unit'],set())\n", " dict3[v['unit']].add(v['sub_unit']) \n", "i = 1 \n", "for k, v in dict3.items():\n", " unit_id = dict2[k]\n", " for item in v:\n", " data_list.append((i,item,unit_id))\n", " i+=1\n", "for item in data_list:\n", " sub_id = item[0]\n", " dict4[sub_id] = {'name':item[1],'unit':item[2]}\n", "dict5 = {}\n", "for k, v in dict1.items():\n", " id_unit = dict2[v['unit']]\n", " sub_name = v['sub_unit']\n", " id_sub = 0\n", " for k1, v1 in dict4.items():\n", " if v1['name'] == sub_name and v1['unit'] == id_unit:\n", " id_sub = int(k1)\n", " if id_sub >0:\n", " dict5[k] = {'unit':id_unit,'sub_unit':id_sub}\n", " else:\n", " print(k,'not fund')\n", "data_list = []\n", "for k, v in dict5.items():\n", " id = int(k)\n", " name = person[k]['name']\n", " sex = person[k]['sex']\n", " birth = person[k]['birth']\n", " phone = ''\n", " note = ''\n", " unit = v['sub_unit']\n", " data_list.append((id,name,sex,birth,unit))\n", "sql = 'insert into tianjin_person (id,name,sex,birth,unit_id) values %s'\n", "ex.execute_values(cursor, sql, data_list, page_size=10000)\n", "#conn.commit()\n", "cursor.close()\n", "conn.close()\n", "print('ok!') \n", " " ] }, { "cell_type": "code", "execution_count": null, "id": "c2007c46-38c8-4a20-9917-b0b8743fe2a9", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import psycopg2\n", "from psycopg2 import extras as ex\n", "\n", "conn = psycopg2.connect(database=\"mycrm\", user=\"postgres\", password=\"songyi\", host=\"localhost\", port=\"5432\")\n", "cursor = conn.cursor()\n", " \n", "filename = 'data/石家庄石化部门.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "dict3 = {}\n", "for k,v in dict1.items():\n", " dict3[v] = int(k)\n", "filename = 'data/result_石家庄.json'\n", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl)\n", "data_list = []\n", "for k, v in dict2.items():\n", " id = int(k)\n", " name = dict2[k]['name']\n", " sex = dict2[k]['sex']\n", " birth = dict2[k]['birth'] \n", " unit = dict3[dict2[k]['unit']]\n", " data_list.append((id,name,sex,birth,unit))\n", "sql = 'insert into shijiazhuang_person (id,name,sex,birth,unit_id) values %s'\n", "ex.execute_values(cursor, sql, data_list, page_size=10000)\n", "#conn.commit()\n", "cursor.close()\n", "conn.close()\n", "print('ok!') " ] }, { "cell_type": "markdown", "id": "fd95a45a-c6df-47c3-9941-2d0579b2c5d9", "metadata": {}, "source": [ "### 导入测试成绩及得分" ] }, { "cell_type": "markdown", "id": "c989de3f-a8ab-47dc-9662-544e4b6a0e2f", "metadata": { "tags": [] }, "source": [ "#### 二级部门导入" ] }, { "cell_type": "code", "execution_count": null, "id": "360e61e9-7895-484b-a9d6-333bdefa1a86", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import psycopg2\n", "from psycopg2 import extras as ex\n", "\n", "filename = '../item.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "dict2 = {}\n", "for k, v in dict1.items():\n", " dict2[v['name']] = int(k)\n", "\n", "filename = 'data/天津石化部门.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "unit = {}\n", "for item in dict1['unit']:\n", " unit[item['name']] = item['id']\n", "\n", "sub_unit = {}\n", "for item in dict1['sub_unit']:\n", " sub_unit.setdefault(item['unit_id'],[])\n", " sub_unit[item['unit_id']].append({'id':item['id'],'name':item['name']})\n", " \n", "filename = 'data/天津石化人员名单.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "person = {}\n", "for k, v in dict1.items():\n", " person[k] = {'unit':v['unit'],'sub_unit':v['sub_unit']}\n", "\n", " \n", "conn = psycopg2.connect(database=\"mycrm\", user=\"postgres\", password=\"songyi\", host=\"localhost\", port=\"5432\")\n", "cursor = conn.cursor()\n", "data_list = []\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", " for item in v.keys():\n", " if item in dict2.keys():\n", " item_id = dict2[item]\n", " if v[item]['得分'] == '\\\\N':\n", " score = None\n", " else:\n", " score = int(v[item]['得分'])\n", " unit_name = person[k]['unit'] \n", " sub_unit_name = person[k]['sub_unit']\n", " unit_id = unit[unit_name]\n", " for items in sub_unit[unit_id]:\n", " if items['name'] ==sub_unit_name:\n", " sub_id = items['id'] \n", " data_list.append((v[item]['成绩'],score,int(k),item_id,unit_id,sub_id))\n", " \n", "sql = 'insert into tianjin_records (performance,score,avatar_id_id,item_id_id,unit_id_id,sub_unit_id_id) values %s'\n", "ex.execute_values(cursor, sql, data_list, page_size=10000)\n", "#conn.commit()\n", "cursor.close()\n", "conn.close()\n", "print('ok!') \n", " " ] }, { "cell_type": "markdown", "id": "4aeabbbc-5b51-4dd0-b428-83e2012e63c4", "metadata": {}, "source": [ "#### 一级部门导入" ] }, { "cell_type": "code", "execution_count": null, "id": "cb747368-d3ac-4b29-ae4f-ce207d5fcd43", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import psycopg2\n", "from psycopg2 import extras as ex\n", "\n", "filename = '../item.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "dict2 = {}\n", "for k, v in dict1.items():\n", " dict2[v['name']] = int(k)\n", "\n", "filename = 'data/石家庄石化部门.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "dict3 = {}\n", "for k,v in dict1.items():\n", " dict3[v] = int(k)\n", " \n", "\n", "conn = psycopg2.connect(database=\"mycrm\", user=\"postgres\", password=\"songyi\", host=\"localhost\", port=\"5432\")\n", "cursor = conn.cursor()\n", "data_list = []\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", " for item in v.keys():\n", " if item in dict2.keys():\n", " item_id = dict2[item] \n", " if v[item]['得分'] == '':\n", " score = None\n", " else:\n", " score = int(v[item]['得分'])\n", " unit_name = v['unit']\n", " unit_id = dict3[unit_name]\n", " data_list.append((v[item]['成绩'],score,int(k),item_id,unit_id))\n", "sql = 'insert into shijiazhuang_records (performance,score,avatar_id_id,item_id_id,unit_id_id) values %s'\n", "ex.execute_values(cursor, sql, data_list, page_size=10000)\n", "#conn.commit()\n", "cursor.close()\n", "conn.close()\n", "print('ok!')" ] }, { "cell_type": "code", "execution_count": null, "id": "51dc35a5-dc07-40a4-9ea7-375ca7f983c3", "metadata": {}, "outputs": [], "source": [ "import json\n", "import psycopg2\n", "from psycopg2 import extras as ex\n", "\n", "filename = '../item.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "dict2 = {}\n", "for k, v in dict1.items():\n", " dict2[v['name']] = int(k)\n", "\n", "filename = 'data/天津石化部门.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "unit = {}\n", "for item in dict1['unit']:\n", " unit[item['name']] = item['id']\n", "print(unit)" ] }, { "cell_type": "markdown", "id": "5780368e-59c7-4bc1-a130-21b2f7da23de", "metadata": {}, "source": [ "# 体质测试综合报告数据分析" ] }, { "cell_type": "markdown", "id": "0ddf1a23-5963-43ba-9166-c88be749d75d", "metadata": {}, "source": [ "## 清理报告数据" ] }, { "cell_type": "code", "execution_count": 19, "id": "46aa847d-e1fe-45bd-85b6-e2d792ec8842", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T02:39:19.221686Z", "iopub.status.busy": "2023-10-27T02:39:19.220179Z", "iopub.status.idle": "2023-10-27T02:39:19.596125Z", "shell.execute_reply": "2023-10-27T02:39:19.595375Z", "shell.execute_reply.started": "2023-10-27T02:39:19.221609Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ok!\n" ] } ], "source": [ "import json\n", "import openpyxl\n", "\n", "\n", "filename = 'data/result_天津231017.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", " \n", "#items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "items = {}\n", "items['lung'] = '肺活量'\n", "items['grip'] ='握力'\n", "items['flexion'] ='坐位体前屈'\n", "items['jump'] ='纵跳'\n", "items['pushup'] ='俯卧撑'\n", "items['balance'] ='单脚站立'\n", "items['reaction'] ='选择反应时'\n", "items['step'] ='台阶指数'\n", "items['situp'] ='一分钟仰卧起坐'\n", "items['bmi'] ='BMI'\n", "\n", "\n", "list1 = []\n", "fiie_path ='./134/'\n", "list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']\n", "i=1\n", "list2 = []\n", "dict2 = {}\n", "for k, v in dict1.items():\n", " list1 = []\n", " mydata = {}\n", " \n", " id = str(k).rjust(8,\"0\")\n", " mydata['unit'] = v['unit']\n", " mydata['name'] = v['name']\n", " mydata['sex'] = v['sex']\n", " mydata['month'] = v['month']\n", " age = int(v['month']/12)\n", " if age <20:\n", " mydata['age'] = 20\n", " else:\n", " mydata['age'] = int(v['month']/12)\n", " \n", " mydata['fits'] = {}\n", " score = 0\n", " for item in list_item:\n", " if item in v.keys():\n", " if item in ['lung','pushup','step','situp']:\n", " mark = v[item]['成绩'].split()[0].split('.')[0]\n", " else:\n", " mark = v[item]['成绩'].split()[0]\n", " mydata['fits'][items[item]] = {'mark':mark,'score':v[item]['score']}\n", " score = score + v[item]['score']\n", " mydata['score'] = round(score/len(mydata['fits']),2)\n", " if len(mydata['fits']) >2:\n", " dict2[str(k)] = mydata\n", "filename = f'data/data_天津231017.json'\n", "with open(filename,'w') as fl:\n", " json.dump(dict2,fl , ensure_ascii=False) \n", "print('ok!') " ] }, { "cell_type": "markdown", "id": "ed5f157a-3114-4221-907d-53ce62409d83", "metadata": {}, "source": [ "## 计算平均成绩" ] }, { "cell_type": "code", "execution_count": 28, "id": "63edd636-f034-4aa6-8575-63d5cdb84adb", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T02:49:58.190922Z", "iopub.status.busy": "2023-10-27T02:49:58.190633Z", "iopub.status.idle": "2023-10-27T02:49:58.268977Z", "shell.execute_reply": "2023-10-27T02:49:58.268090Z", "shell.execute_reply.started": "2023-10-27T02:49:58.190898Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "平均成绩:2.4704分,男性:3788人\n", "平均成绩:2.8269分,女性:1595人\n", "平均成绩:2.576分,总体:5383人\n" ] } ], "source": [ "nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n", "\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/5383,4)}分,总体:5383人')" ] }, { "cell_type": "markdown", "id": "3277b104-9b53-41c4-9b9a-f9acb71dbce1", "metadata": {}, "source": [ "## 计算测试等级" ] }, { "cell_type": "code", "execution_count": 31, "id": "1b4a3f02-9b2e-41fc-ac6c-8163907a07f1", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T02:58:06.779955Z", "iopub.status.busy": "2023-10-27T02:58:06.779651Z", "iopub.status.idle": "2023-10-27T02:58:07.075493Z", "shell.execute_reply": "2023-10-27T02:58:07.074963Z", "shell.execute_reply.started": "2023-10-27T02:58:06.779929Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0~255分人数:2524人,男性:2056人,女性:468人\n", "256~332分人数:2214人,男性:1400人,女性:814人\n", "333~367分人数:495人,男性:274人,女性:221人\n", "368~500分人数:150人,男性:58人,女性:92人\n", "5383\n", "ok\n" ] } ], "source": [ "import json\n", "\n", "items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "\n", "filename = 'data/data_天津231017.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "dict2 = {}\n", "dict2['不合格'] = [0,255]\n", "dict2['合格'] = [256,332]\n", "dict2['良好'] = [333,367]\n", "dict2['优秀'] = [368,500]\n", "\n", "for k1, v1 in dict2.items():\n", " di = v1[0]\n", " gao = v1[1]\n", " i = 0 \n", " m = 0\n", " f = 0\n", " for k,v in dict1.items():\n", " if int(v['score']*100) in range(di,gao+1):\n", " dict1[k]['level'] = k1\n", " i+=1\n", " if v['sex'] == '男':\n", " m = m +1\n", " else:\n", " f = f+1\n", " print(f'{di}~{gao}分人数:{i}人,男性:{m}人,女性:{f}人')\n", "print(len(dict1))\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl) \n", "print('ok')" ] }, { "cell_type": "markdown", "id": "39a1239d-13d8-4583-a163-e6db98c3933b", "metadata": {}, "source": [ "### 计算各年龄段测试等级(女)" ] }, { "cell_type": "code", "execution_count": 32, "id": "2d661ca6-6129-4da1-ac25-51d0156babb2", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T02:58:18.805947Z", "iopub.status.busy": "2023-10-27T02:58:18.805660Z", "iopub.status.idle": "2023-10-27T02:58:18.884931Z", "shell.execute_reply": "2023-10-27T02:58:18.884363Z", "shell.execute_reply.started": "2023-10-27T02:58:18.805924Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20-24 {'不合格': 131, '合格': 177, '良好': 25, '优秀': 5}\n", "25-29 {'不合格': 54, '良好': 21, '合格': 90, '优秀': 3}\n", "30-34 {'不合格': 14, '合格': 46, '良好': 11, '优秀': 4}\n", "35-39 {'不合格': 30, '良好': 32, '合格': 77, '优秀': 8}\n", "40-44 {'不合格': 46, '合格': 84, '优秀': 12, '良好': 24}\n", "45-49 {'合格': 204, '不合格': 112, '良好': 69, '优秀': 32}\n", "50-54 {'合格': 136, '不合格': 81, '优秀': 28, '良好': 39}\n", "55-80 {'合格': 0, '不合格': 0, '良好': 0, '优秀': 0}\n" ] } ], "source": [ "nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n", "\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "dict2 = {}\n", "dict2['不合格'] = [0,255]\n", "dict2['合格'] = [256,332]\n", "dict2['良好'] = [333,367]\n", "dict2['优秀'] = [368,500]\n", "dict3 = {}\n", "for item in nld:\n", " di = item[0]\n", " gao = item[1]\n", " age = f'{di}-{gao}'\n", " dict3.setdefault(age,{})\n", " i = 0 \n", " m = 0\n", " f = 0\n", " for k,v in dict1.items():\n", " if v['age'] in range(di,gao+1): \n", " dict3[age].setdefault(v['level'],0)\n", " if v['sex'] == '女':\n", " dict3[age][v['level']] = dict3[age][v['level']]+1\n", " \n", "for k, v in dict3.items():\n", " print(k,v)" ] }, { "cell_type": "markdown", "id": "b7d10bef-405f-49a1-b423-2b972b4d1a44", "metadata": {}, "source": [ "### 计算各年龄段测试等级(男)" ] }, { "cell_type": "code", "execution_count": 33, "id": "fc97df37-34ff-4a02-9d26-b5d81b706e46", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T02:59:02.314552Z", "iopub.status.busy": "2023-10-27T02:59:02.313742Z", "iopub.status.idle": "2023-10-27T02:59:02.387081Z", "shell.execute_reply": "2023-10-27T02:59:02.386535Z", "shell.execute_reply.started": "2023-10-27T02:59:02.314476Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20-24 {'不合格': 426, '合格': 240, '良好': 34, '优秀': 6}\n", "25-29 {'不合格': 196, '良好': 34, '合格': 138, '优秀': 4}\n", "30-34 {'不合格': 90, '合格': 59, '良好': 13, '优秀': 3}\n", "35-39 {'不合格': 171, '良好': 33, '合格': 119, '优秀': 5}\n", "40-44 {'不合格': 114, '合格': 103, '优秀': 6, '良好': 22}\n", "45-49 {'合格': 179, '不合格': 245, '良好': 39, '优秀': 3}\n", "50-54 {'合格': 345, '不合格': 502, '优秀': 22, '良好': 60}\n", "55-80 {'合格': 217, '不合格': 312, '良好': 39, '优秀': 9}\n" ] } ], "source": [ "nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n", "\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "dict2 = {}\n", "dict2['不合格'] = [0,255]\n", "dict2['合格'] = [256,332]\n", "dict2['良好'] = [333,367]\n", "dict2['优秀'] = [368,500]\n", "dict3 = {}\n", "for item in nld:\n", " di = item[0]\n", " gao = item[1]\n", " age = f'{di}-{gao}'\n", " dict3.setdefault(age,{})\n", " i = 0 \n", " m = 0\n", " f = 0\n", " for k,v in dict1.items():\n", " if v['age'] in range(di,gao+1): \n", " dict3[age].setdefault(v['level'],0)\n", " if v['sex'] == '男':\n", " dict3[age][v['level']] = dict3[age][v['level']]+1\n", " \n", "for k, v in dict3.items():\n", " print(k,v)" ] }, { "cell_type": "markdown", "id": "466355fe-5939-463c-a31e-a3a1beb4e78b", "metadata": {}, "source": [ "## 根据年龄汇总人员信息及成绩" ] }, { "cell_type": "code", "execution_count": 24, "id": "dafb86f8-5ee0-4c87-a98f-c7ff0f631fe5", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T02:42:53.065561Z", "iopub.status.busy": "2023-10-27T02:42:53.065280Z", "iopub.status.idle": "2023-10-27T02:42:53.141524Z", "shell.execute_reply": "2023-10-27T02:42:53.140901Z", "shell.execute_reply.started": "2023-10-27T02:42:53.065537Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "16~24岁平均成绩:2.47分,人数:1044人,男性:706人\n", "25~29岁平均成绩:2.58分,人数:540人,男性:372人\n", "30~34岁平均成绩:2.6分,人数:240人,男性:165人\n", "35~39岁平均成绩:2.64分,人数:475人,男性:328人\n", "40~44岁平均成绩:2.69分,人数:411人,男性:245人\n", "45~49岁平均成绩:2.68分,人数:883人,男性:466人\n", "50~54岁平均成绩:2.57分,人数:1213人,男性:929人\n", "55~69岁平均成绩:2.48分,人数:577人,男性:577人\n" ] } ], "source": [ "nld = [[16,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,69]]\n", "\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "for item in nld:\n", " di = item[0]\n", " gao = item[1]\n", " i = 0\n", " score = 0\n", " m = 0\n", " f = 0\n", " for k,v in dict1.items():\n", " if v['age'] in range(di,gao+1):\n", " score = score+v['score']\n", " i+=1\n", " if v['sex'] == '男':\n", " m = m +1\n", " if i ==0:\n", " print(f'{di}~{gao}岁平均成绩:0分,人数:0人,男性:{m}人')\n", " else:\n", " print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i-1}人,男性:{m}人')" ] }, { "cell_type": "markdown", "id": "dafdffca-6543-4304-af61-4f7cd418ba24", "metadata": {}, "source": [ "### 根据年龄汇总人员信息及成绩(男)" ] }, { "cell_type": "code", "execution_count": 26, "id": "347703a1-501b-4800-bd29-16e94f4a6793", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T02:46:37.747375Z", "iopub.status.busy": "2023-10-27T02:46:37.747078Z", "iopub.status.idle": "2023-10-27T02:46:37.815689Z", "shell.execute_reply": "2023-10-27T02:46:37.814984Z", "shell.execute_reply.started": "2023-10-27T02:46:37.747349Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20~24岁平均成绩:2.39分,人数:706人\n", "25~29岁平均成绩:2.5分,人数:372人\n", "30~34岁平均成绩:2.47分,人数:165人\n", "35~39岁平均成绩:2.5分,人数:328人\n", "40~44岁平均成绩:2.57分,人数:245人\n", "45~49岁平均成绩:2.48分,人数:466人\n", "50~54岁平均成绩:2.47分,人数:929人\n", "55~80岁平均成绩:2.48分,人数:577人\n" ] } ], "source": [ "import json\n", "\n", "nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n", "\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "for item in nld:\n", " di = item[0]\n", " gao = item[1]\n", " i = 0\n", " score = 0\n", " m = 0\n", " f = 0\n", " for k,v in dict1.items():\n", " if v['age'] in range(di,gao+1) and v['sex'] == '男':\n", " score = score+v['score']\n", " i+=1\n", " if i ==0:\n", " print(f'{di}~{gao}岁平均成绩:0分,人数:{i}人') \n", " else:\n", " print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i}人')" ] }, { "cell_type": "markdown", "id": "9b63891e-824a-4772-83f9-0706381ffd14", "metadata": {}, "source": [ "### 根据年龄汇总人员信息及成绩(女)" ] }, { "cell_type": "code", "execution_count": 27, "id": "5900d1c7-2f8c-4dfa-a60e-a577fb90f22d", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T02:47:40.422207Z", "iopub.status.busy": "2023-10-27T02:47:40.421915Z", "iopub.status.idle": "2023-10-27T02:47:40.532803Z", "shell.execute_reply": "2023-10-27T02:47:40.532106Z", "shell.execute_reply.started": "2023-10-27T02:47:40.422184Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20~24岁平均成绩:2.65分,人数:338人\n", "25~29岁平均成绩:2.74分,人数:168人\n", "30~34岁平均成绩:2.88分,人数:75人\n", "35~39岁平均成绩:2.95分,人数:147人\n", "40~44岁平均成绩:2.85分,人数:166人\n", "45~49岁平均成绩:2.9分,人数:417人\n", "50~54岁平均成绩:2.89分,人数:284人\n", "55~80岁平均成绩:0分,人数:0人\n" ] } ], "source": [ "nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n", "\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "for item in nld:\n", " di = item[0]\n", " gao = item[1]\n", " i = 0\n", " score = 0\n", " m = 0\n", " f = 0\n", " for k,v in dict1.items():\n", " if v['age'] in range(di,gao+1) and v['sex'] == '女':\n", " score = score+v['score']\n", " i+=1\n", " if i ==0:\n", " print(f'{di}~{gao}岁平均成绩:0分,人数:{i}人') \n", " else:\n", " print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i}人')" ] }, { "cell_type": "markdown", "id": "ca546652-d275-46d3-9b9a-9cb1c3a09a78", "metadata": {}, "source": [ "## 计算各项目成绩" ] }, { "cell_type": "code", "execution_count": 34, "id": "ad69c45d-3f62-42df-894d-47424e759029", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T02:59:52.525939Z", "iopub.status.busy": "2023-10-27T02:59:52.525661Z", "iopub.status.idle": "2023-10-27T02:59:52.682642Z", "shell.execute_reply": "2023-10-27T02:59:52.681750Z", "shell.execute_reply.started": "2023-10-27T02:59:52.525915Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BMI 3.53 5344\n", "肺活量 3.3 5270\n", "握力 1.36 5291\n", "坐位体前屈 2.87 4581\n", "纵跳 1.93 4632\n", "俯卧撑 2.49 3085\n", "一分钟仰卧起坐 3.85 1034\n", "单脚站立 1.96 5180\n", "选择反应时 2.93 5300\n", "台阶指数 2.6 2164\n" ] } ], "source": [ "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "items = ['BMI','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "for item in items:\n", " score = 0\n", " n = 0\n", " for k, v in dict1.items(): \n", " if item in v['fits'].keys():\n", " n = n + 1\n", " score =score + int(v['fits'][item]['score'])\n", " print(item,round(score/n,2),n)" ] }, { "cell_type": "markdown", "id": "f005328b-1927-4f62-b530-e7750299c423", "metadata": {}, "source": [ "## 按照部门计算平均成绩" ] }, { "cell_type": "code", "execution_count": 35, "id": "dcf152e7-bbcc-47d1-9c5f-83854db35412", "metadata": { "execution": { "iopub.execute_input": "2023-10-27T03:04:24.035897Z", "iopub.status.busy": "2023-10-27T03:04:24.035597Z", "iopub.status.idle": "2023-10-27T03:04:24.127211Z", "shell.execute_reply": "2023-10-27T03:04:24.126568Z", "shell.execute_reply.started": "2023-10-27T03:04:24.035871Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "化验计量部 2.56 469\n", "南港烯烃部 2.48 681\n", "消防支队 2.52 72\n", "炼油部 2.63 1191\n", "化工部 2.58 522\n", "电仪部 2.4 322\n", "物资采购中心 2.67 84\n", "水务部 2.53 396\n", "运输销售部 2.44 199\n", "原油储运部 2.5 178\n", "聚醚部 2.63 112\n", "公司机关 2.65 112\n", "南港乙烯项目管理部 2.61 15\n", "党委党校(培训中心) 2.79 48\n", "装备研究院 2.71 48\n", "热电部 2.63 412\n", "烯烃部 2.63 320\n", "行政事务中心 2.6 41\n", "信息档案管理中心 2.84 60\n", "研究院 2.82 101\n" ] } ], "source": [ "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "depart = []\n", "for k, v in dict1.items():\n", " if v['unit'] not in depart:\n", " depart.append(v['unit'])\n", "\n", "for item in depart:\n", " score = 0\n", " n = 0\n", " for k, v in dict1.items():\n", " if item == v['unit']:\n", " score = score + v['score']\n", " n = n +1 \n", " print(item,round(score/n,2),n)" ] }, { "cell_type": "code", "execution_count": null, "id": "46997480-54dd-440f-83a1-0e946d7463f7", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "d1977ca9-bf12-4f09-ae7b-e8af9eaa82f2", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "bdb81e20-32ec-4e0e-b2ac-13dac2060068", "metadata": { "tags": [] }, "source": [ "# 体质报告在线管理" ] }, { "cell_type": "markdown", "id": "1485fc89-4fc2-437d-a29e-b4a0aab12aa0", "metadata": {}, "source": [ "## 新增体测单位" ] }, { "cell_type": "code", "execution_count": null, "id": "cf345bf0-f11b-459e-9b69-b2843836f6f3", "metadata": { "tags": [] }, "outputs": [], "source": [ "import pymongo\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"baogao\"]\n", "mycol = mydb[\"place\"]\n", "\n", "mydict = { \"id\": \"469849\",\"name\": \"长炼医院\", }\n", " \n", "x = mycol.insert_one(mydict) " ] }, { "cell_type": "markdown", "id": "df2d18e2-d2e4-499e-876a-59d8550a8201", "metadata": {}, "source": [ "## 新增报告信息" ] }, { "cell_type": "code", "execution_count": null, "id": "1acaf159-637e-4101-9881-f6bb79400136", "metadata": { "tags": [] }, "outputs": [], "source": [ "import pymongo\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"baogao\"]\n", "mycol = mydb[\"pdf\"]\n", "\n", "mydict = { \"place\": \"714309\",\"code\":\"4\",\"name\": \"朱维\", }\n", " \n", "x = mycol.insert_one(mydict) " ] }, { "cell_type": "code", "execution_count": null, "id": "ad3078ac-ae53-4bb4-95bd-387631092bf1", "metadata": { "tags": [] }, "outputs": [], "source": [ "import pymongo\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"baogao\"]\n", "mycol = mydb[\"pdf\"]\n", "\n", "mydict = { \"place\": \"714309\",\"code\":\"4\",\"name\": \"朱维\", }\n", " \n", "x = mycol.find_one(mydict) \n", "print(x)" ] }, { "cell_type": "code", "execution_count": null, "id": "cc0571b6-1da5-4bcc-96ad-5613cd1198e3", "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 }