From 64d8cd5e160f28c88c9a64210e8c0fb882234aa6 Mon Sep 17 00:00:00 2001 From: "512song@sina.com" Date: Sat, 14 Jan 2023 12:18:21 +0800 Subject: [PATCH] 20230114 --- 体测单位/天津石化.ipynb | 370 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 335 insertions(+), 35 deletions(-) diff --git a/体测单位/天津石化.ipynb b/体测单位/天津石化.ipynb index a07a5fc..b5ecdd9 100644 --- a/体测单位/天津石化.ipynb +++ b/体测单位/天津石化.ipynb @@ -723,27 +723,12 @@ }, { "cell_type": "code", - "execution_count": 113, + "execution_count": null, "id": "7bb2e3aa-591d-4fce-983a-cde5d4c30e56", "metadata": { - "execution": { - "iopub.execute_input": "2023-01-09T13:24:29.720040Z", - "iopub.status.busy": "2023-01-09T13:24:29.719490Z", - "iopub.status.idle": "2023-01-09T13:24:30.627490Z", - "shell.execute_reply": "2023-01-09T13:24:30.626140Z", - "shell.execute_reply.started": "2023-01-09T13:24:29.719971Z" - }, "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ok\n" - ] - } - ], + "outputs": [], "source": [ "import openpyxl\n", "import json\n", @@ -784,27 +769,12 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": null, "id": "b38aef28-5d1b-4762-9c7e-70a531594fa4", "metadata": { - "execution": { - "iopub.execute_input": "2023-01-09T13:32:31.923948Z", - "iopub.status.busy": "2023-01-09T13:32:31.923410Z", - "iopub.status.idle": "2023-01-09T13:32:32.253445Z", - "shell.execute_reply": "2023-01-09T13:32:32.252452Z", - "shell.execute_reply.started": "2023-01-09T13:32:31.923900Z" - }, "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ok!\n" - ] - } - ], + "outputs": [], "source": [ "import openpyxl\n", "import json\n", @@ -842,10 +812,340 @@ "print('ok!')" ] }, + { + "cell_type": "markdown", + "id": "638bbe8e-3770-40e1-b884-ceeeec5a053c", + "metadata": {}, + "source": [ + "## 因素分析" + ] + }, + { + "cell_type": "markdown", + "id": "9e25a7f2-0571-438b-9aa4-e3337d9fd840", + "metadata": {}, + "source": [ + "### 清除修改测试项目" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "id": "6e6f6a63-b297-42e8-a9ba-b2636fda5d09", + "metadata": { + "execution": { + "iopub.execute_input": "2023-01-14T01:56:50.048701Z", + "iopub.status.busy": "2023-01-14T01:56:50.047669Z", + "iopub.status.idle": "2023-01-14T01:56:50.449993Z", + "shell.execute_reply": "2023-01-14T01:56:50.448696Z", + "shell.execute_reply.started": "2023-01-14T01:56:50.048628Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ok\n" + ] + } + ], + "source": [ + "import json\n", + "import openpyxl\n", + "\n", + "\n", + "filename = 'data/天津石化人员231113.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl)\n", + "code = '1734094'\n", + "items = ['身高','体重']\n", + "for item in items:\n", + " del dict1[code][item]\n", + "with open(filename, 'w') as fl:\n", + " json.dump(dict1, fl, ensure_ascii=False)\n", + "print('ok')" + ] + }, + { + "cell_type": "markdown", + "id": "f96b3aeb-bf37-4a8b-bf18-d0ae8f7df653", + "metadata": {}, + "source": [ + "### 人员情况导入" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "id": "4d77ec9b-c561-4355-98af-b18c42c1f3ca", + "metadata": { + "execution": { + "iopub.execute_input": "2023-01-14T01:56:10.352541Z", + "iopub.status.busy": "2023-01-14T01:56:10.352010Z", + "iopub.status.idle": "2023-01-14T01:56:13.111656Z", + "shell.execute_reply": "2023-01-14T01:56:13.110214Z", + "shell.execute_reply.started": "2023-01-14T01:56:10.352494Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ok\n" + ] + } + ], + "source": [ + "import openpyxl\n", + "import json\n", + "\n", + "\n", + "wb = openpyxl.load_workbook('data/员工个人基础信息20230113.xlsx')\n", + "sheet = wb.active\n", + "# sheets = wb.sheetnames\n", + "person = {}\n", + "\n", + "for n in range(4, 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, 3).value\n", + " dict1['unit'] = sheet.cell(n, 6).value\n", + " dict1['sub_unit'] = sheet.cell(n, 7).value\n", + " if sheet.cell(n,10).value is not None:\n", + " dict1['daoban'] = '是'\n", + " else:\n", + " dict1['daoban'] = '否'\n", + " dict1['age'] = sheet.cell(n, 13).value\n", + " dict1['gl'] = sheet.cell(n, 14).value\n", + " dict1['jhgl'] = sheet.cell(n, 15).value \n", + " person[code] = dict1\n", + "filename = 'data/天津石化人员231113.json'\n", + "with open(filename, 'w') as fl:\n", + " json.dump(person, fl, ensure_ascii=False)\n", + "print('ok')" + ] + }, + { + "cell_type": "markdown", + "id": "a5c58b77-69b6-4d76-8927-6e734556e848", + "metadata": {}, + "source": [ + "### 人员体测得分导入合并" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "id": "db473c01-7e1a-48c4-a0d7-e44cdeb9e24b", + "metadata": { + "execution": { + "iopub.execute_input": "2023-01-14T01:56:24.524792Z", + "iopub.status.busy": "2023-01-14T01:56:24.524267Z", + "iopub.status.idle": "2023-01-14T01:56:24.967568Z", + "shell.execute_reply": "2023-01-14T01:56:24.966212Z", + "shell.execute_reply.started": "2023-01-14T01:56:24.524745Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ok\n" + ] + } + ], + "source": [ + "import json\n", + "import openpyxl\n", + "\n", + "items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", + "\n", + "filename = 'data/result_天津.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl)\n", + "\n", + "filename = 'data/天津石化人员231113.json'\n", + "with open(filename,'r') as fl:\n", + " dict2 = json.load(fl)\n", + "for k, v in dict2.items():\n", + " if k in dict1.keys():\n", + " for item in dict1[k].keys():\n", + " dict2[k][item] = dict1[k][item]\n", + "filename = 'data/天津石化人员231113.json'\n", + "with open(filename, 'w') as fl:\n", + " json.dump(dict2, fl, ensure_ascii=False)\n", + "print('ok')\n", + " " + ] + }, + { + "cell_type": "markdown", + "id": "cc53ec68-cfc4-449a-9905-095a079dc8ab", + "metadata": {}, + "source": [ + "### 筛选体测人员,计算得分" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "id": "224cdee4-153f-424a-aaaa-92ef58943edb", + "metadata": { + "execution": { + "iopub.execute_input": "2023-01-14T01:56:53.363160Z", + "iopub.status.busy": "2023-01-14T01:56:53.362570Z", + "iopub.status.idle": "2023-01-14T01:56:53.912576Z", + "shell.execute_reply": "2023-01-14T01:56:53.911169Z", + "shell.execute_reply.started": "2023-01-14T01:56:53.363112Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ok\n" + ] + } + ], + "source": [ + "import json\n", + "\n", + "items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", + "\n", + "filename = 'data/result_天津.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl)\n", + "\n", + "filename = 'data/天津石化人员231113.json'\n", + "with open(filename,'r') as fl:\n", + " dict2 = json.load(fl)\n", + "dict3 = {}\n", + "for k, v in dict2.items():\n", + " if k in dict1.keys():\n", + " dict3[k] = dict2[k]\n", + " i = 0\n", + " score =0\n", + " for item in dict2[k].keys(): \n", + " if item in items:\n", + " score = score + int(dict2[k][item]['得分'])\n", + " i+=1\n", + " dict3[k]['score'] = score\n", + " dict3[k]['item_num'] = i\n", + " dict3[k]['avg'] = round(score/i,2)\n", + "filename = 'data/天津石化人员231113_1.json'\n", + "with open(filename, 'w') as fl:\n", + " json.dump(dict3, fl, ensure_ascii=False)\n", + "print('ok')" + ] + }, + { + "cell_type": "markdown", + "id": "dd014e41-18f2-44e7-9f20-1190df4e7b45", + "metadata": {}, + "source": [ + "### 因素分析" + ] + }, + { + "cell_type": "markdown", + "id": "c63bca31-f003-49e9-a20d-1931c050c740", + "metadata": {}, + "source": [ + "#### 倒班因素分析" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "id": "2a964412-8408-4039-a788-8cc1fc7cd518", + "metadata": { + "execution": { + "iopub.execute_input": "2023-01-14T03:54:06.706899Z", + "iopub.status.busy": "2023-01-14T03:54:06.706358Z", + "iopub.status.idle": "2023-01-14T03:54:06.815555Z", + "shell.execute_reply": "2023-01-14T03:54:06.814512Z", + "shell.execute_reply.started": "2023-01-14T03:54:06.706851Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ok!\n" + ] + } + ], + "source": [ + "import json\n", + "import openpyxl\n", + "\n", + "filename = 'data/天津石化人员231113_1.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl)\n", + "unit = set()\n", + "\n", + "for k, v in dict1.items():\n", + " unit.add(dict1[k]['unit'])\n", + "#print(unit)\n", + "dict2 = {}\n", + "for k, v in dict1.items():\n", + " dict2.setdefault(v['unit'],{})\n", + " dict2[v['unit']].setdefault('是',{})\n", + " dict2[v['unit']].setdefault('否',{})\n", + " dict2[v['unit']]['是'].setdefault('num',0)\n", + " dict2[v['unit']]['否'].setdefault('num',0)\n", + " dict2[v['unit']]['是'].setdefault('score',0)\n", + " dict2[v['unit']]['否'].setdefault('score',0)\n", + " dict2[v['unit']][v['daoban']]['num'] = dict2[v['unit']][v['daoban']]['num'] + 1\n", + " dict2[v['unit']][v['daoban']]['score'] = dict2[v['unit']][v['daoban']]['score'] + v['avg']\n", + "for k, v in dict2.items():\n", + " \n", + " if v['是']['num'] > 0:\n", + " dict2[k]['是']['avg'] = round(v['是']['score']/v['是']['num'],2)\n", + " else:\n", + " dict2[k]['是']['avg'] = 0\n", + " if v['否']['num'] > 0:\n", + " dict2[k]['否']['avg'] = round(v['否']['score']/v['否']['num'],2)\n", + " else:\n", + " dict2[k]['否']['avg'] = 0\n", + "list1 = [] \n", + "for k, v in dict2.items():\n", + " list2 = []\n", + " unit = k\n", + " for k1, v1 in v.items():\n", + " daoban = k1\n", + " num = v1['num']\n", + " avg = v1['avg']\n", + " list2 = [k,daoban,num,avg]\n", + " list1.append(list2)\n", + " \n", + "filename = 'data/天津倒班因素分析表.xlsx' \n", + "wb = openpyxl.Workbook()\n", + "sheet = wb.active\n", + "\n", + "for row in list1:\n", + " sheet.append(row)\n", + " \n", + "wb.save(filename)\n", + "print('ok!')" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "a4c24e30-f4e0-46e9-a22e-5460a73a14c8", + "id": "4fdc1484-ea69-4779-9a75-c52784cc9c7c", "metadata": {}, "outputs": [], "source": []