{ "cells": [ { "cell_type": "markdown", "id": "70c15816-2ad5-4486-be33-378963d70934", "metadata": {}, "source": [ "## 人员信息导入" ] }, { "cell_type": "code", "execution_count": null, "id": "07f7e97e-670e-4301-b83d-1304514f15d5", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "\n", "wb = openpyxl.load_workbook('data/xizang.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, 5).value)\n", " person.setdefault(code, {})\n", " dict1 = {}\n", " dict1['name'] = sheet.cell(n, 1).value\n", " if sheet.cell(n, 2).value ==0:\n", " sex = '男'\n", " else:\n", " sex = '女'\n", " dict1['sex'] = sex\n", " birth = str(sheet.cell(n, 3).value).split()[0]\n", " dict1['birth'] = birth\n", " \n", " if sheet.cell(n,5).value is not None:\n", " dict1['phone'] = str(sheet.cell(n, 4).value) \n", " person[code] = dict1\n", "\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": "be805082-d5d7-405b-975c-fb902085a041", "metadata": {}, "source": [ "## 文件更名" ] }, { "cell_type": "code", "execution_count": null, "id": "b51cf562-c708-4164-8431-5093247880c4", "metadata": {}, "outputs": [], "source": [ "import os,sys,shutil\n", "import json\n", "import math\n", "import glob\n", "from pathlib import Path\n", "\n", "fi_path = 'file/2023-06-07'\n", "old = []\n", "dict2 = {}\n", "\n", "filename = 'data/西藏人员.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "for k, v in dict1.items():\n", " m_name = v['name']\n", " dict2[int(k)] = [m_name]\n", "\n", "fls = glob.glob(f'{fi_path}/*.pdf')\n", "\n", "for fn in fls:\n", " old.append(os.path.basename(fn).split('.')[0])\n", "\n", "for n in old: \n", " o_name = f'{fi_path}/{n}.pdf'\n", " new_path = Path(fi_path,'new')\n", " new_path.mkdir(parents = True, exist_ok = True)\n", " n_name = Path(new_path,f'{str(n).rjust(5,\"0\")}-{dict2[int(n)][0]}.pdf')\n", " if not os.path.exists(n_name):\n", " shutil.copyfile(o_name,n_name)\n", " print(n_name)\n", " \n", "print('ok')" ] }, { "cell_type": "markdown", "id": "962f6edd-c8d1-42a2-aaff-58f92ccf8d56", "metadata": {}, "source": [ "## 问卷人员信息导入" ] }, { "cell_type": "code", "execution_count": null, "id": "80d51661-e306-477a-84e8-8b9daf9cdb21", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "import datetime\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,7).value is not None and sheet.cell(n,4).value is not None:\n", " bh = int(sheet.cell(n, 7).value)\n", " person.setdefault(bh, {})\n", " dict1 = {}\n", " dict1['name'] = sheet.cell(n, 2).value\n", " dict1['code'] = sheet.cell(n, 1).value\n", " if sheet.cell(n, 3).value ==1:\n", " sex = '男'\n", " else:\n", " sex = '女'\n", " dict1['sex'] = sex\n", " birth = str(sheet.cell(n, 4).value).split()[0]\n", " \n", " if len(birth) == 2:\n", " dict1['age'] = int(birth)\n", " else:\n", " birth.replace('/','-')\n", " \n", " birth = birth.split('-') \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, 5, 31)-datetime.date(nian,yue,ri)).days\n", " dict1['age'] = round(days/365)\n", " if sheet.cell(n,5).value is not None:\n", " dict1['phone'] = str(sheet.cell(n, 5).value) \n", " person[bh] = dict1\n", "\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": "25ffcc7a-5709-4377-b821-bce5097cbd78", "metadata": {}, "source": [ "## 导入脊柱问卷信息" ] }, { "cell_type": "code", "execution_count": null, "id": "85599cf2-3673-4d3b-ae77-f5ef77217f71", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "\n", "wb = openpyxl.load_workbook('data/西藏手工记录.xlsx')\n", "sheet = wb['Sheet1']\n", "\n", "dict1 = {}\n", "data1 =list(sheet.values)\n", "list_bh = data1[0][1:]\n", "del data1[0]\n", "for i in range(1,len(list_bh)+1):\n", " list2 = []\n", " dict1.setdefault(int(list_bh[i-1]),{})\n", " for item in data1:\n", " list2.append(item[i])\n", " dict1[int(list_bh[i-1])]['wenjuan'] = list2\n", "print(dict1)\n", "filename = 'data/西藏脊柱问卷原始信息.json'\n", "with open(filename, 'w') as fl:\n", " json.dump(dict1, fl, ensure_ascii=False)\n", "print('ok')" ] }, { "cell_type": "markdown", "id": "56538b71-aedc-4880-b655-a814778bda07", "metadata": {}, "source": [ "## 导入体测信息" ] }, { "cell_type": "code", "execution_count": null, "id": "fa2fe417-cd1d-47c1-bcf6-2e711d49af20", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "\n", "wb = openpyxl.load_workbook('data/西藏手工记录.xlsx')\n", "sheet = wb['Sheet2']\n", "filename = 'data/西藏脊柱问卷原始信息.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "data1 =list(sheet.values)\n", "\n", "for item in data1:\n", " bh = str(item[0])\n", " dict1.setdefault(bh,{})\n", " xm = item[1]\n", " result = item[2]\n", " dict1[bh][xm] = result\n", "filename = 'data/西藏脊柱问卷原始信息.json'\n", "with open(filename, 'w') as fl:\n", " json.dump(dict1, fl, ensure_ascii=False)\n", "print('ok')" ] }, { "cell_type": "markdown", "id": "0a66d37f-6436-4e3c-abe1-d5fd4796e683", "metadata": {}, "source": [ "## 导出手工信息" ] }, { "cell_type": "code", "execution_count": null, "id": "59b31b70-2af4-40ba-af8c-e72354508c19", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "\n", "filename = 'data/西藏手工问卷人员名单.json'\n", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl)\n", "filename = 'data/西藏脊柱问卷原始信息.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "for k, v in dict1.items():\n", " s = ''\n", " if k in dict2.keys():\n", " if dict2[str(k)]['sex'] =='男':\n", " sex = \"m\"\n", " else:\n", " sex = \"f\"\n", " dict3 = {}\n", " list_mx = []\n", " name = dict2[str(k)]['name'] \n", " list_mx.append(f'\"name\":\"{name}\"')\n", " list_mx.append(f'\"Gender\":\"{sex}\"')\n", " age = dict2[str(k)]['age']\n", " list_mx.append(f'\"Age\":{age}')\n", " dict3['surveyId'] = \"zsyxz1\"\n", " dict3['name'] = dict2[str(k)]['name'] \n", " code = dict2[str(k)]['code']\n", " for item in v.keys():\n", " if item == 'wenjuan':\n", " for i in range(0,21):\n", " if v[item][i] ==1:\n", " result = 'ture'\n", " else:\n", " result ='false' \n", " item_name = 'q'+str(i+1)\n", " list_mx.append(f'\"{item_name}\":{result}')\n", " for i in range(23,25):\n", " if v[item][i] ==1:\n", " result = 'ture'\n", " else:\n", " result ='false' \n", " item_name = 'q'+str(i)\n", " list_mx.append(f'\"{item_name}\":{result}')\n", " if sex == 'f':\n", " item_name = 'q25a'\n", " if v[item][21] ==1:\n", " result = 'ture'\n", " else:\n", " result ='false'\n", " list_mx.append(f'\"{item_name}\":{result}')\n", " else:\n", " item_name = 'q22'\n", " if v[item][22] ==1:\n", " result = 'ture'\n", " else:\n", " result ='false'\n", " list_mx.append(f'\"{item_name}\":{result}')\n", " item_name = 'q25b'\n", " if v[item][25] ==1:\n", " result = 'ture'\n", " else:\n", " result ='false'\n", " list_mx.append(f'\"{item_name}\":{result}')\n", " else: \n", " item_name = item \n", " list_mx.append(f'\"{item_name}\":{v[item]}')\n", " ss = ','.join(list_mx)\n", " ss ='{'+ss+'}'\n", " dict3['data'] = ss\n", " sj = '2023-06-01 20:00:00'\n", " s= s+f'(\"zsyxz1\",\"{name}\",\"{code}\",\\'{ss}\\',\"{sj}\"),'\n", " print(s)" ] }, { "cell_type": "markdown", "id": "3d7ab69c-941d-4f73-8708-2aab850ae2e1", "metadata": {}, "source": [ "## 导入体测信息" ] }, { "cell_type": "code", "execution_count": null, "id": "e19a4c58-df1e-4136-bf10-33e9ed885e50", "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_20230704.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", " 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_xizang.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": "52597677-83a0-447e-95b2-7e8c4296bec7", "metadata": {}, "source": [ "## 报告更名" ] }, { "cell_type": "code", "execution_count": null, "id": "a84f2536-9e03-442f-8931-53c9fdc57395", "metadata": { "tags": [] }, "outputs": [], "source": [ "import os,sys,shutil\n", "import json\n", "import math\n", "import glob\n", "from pathlib import Path\n", "\n", "fi_path = 'file/2023-06-06'\n", "old = []\n", "dict2 = {}\n", "\n", "filename = 'data/result_xizang.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "for k, v in dict1.items():\n", " m_name = v['name']\n", " dict2[int(k)] = [m_name]\n", "\n", "fls = glob.glob(f'{fi_path}/*.pdf')\n", "\n", "for fn in fls:\n", " old.append(os.path.basename(fn).split('.')[0])\n", "\n", "for n in old: \n", " o_name = f'{fi_path}/{n}.pdf'\n", " new_path = Path(fi_path,'new')\n", " new_path.mkdir(parents = True, exist_ok = True)\n", " n_name = Path(new_path,f'{str(n).rjust(5,\"0\")}-{dict2[int(n)][0]}.pdf')\n", " if not os.path.exists(n_name):\n", " shutil.copyfile(o_name,n_name)\n", " print(n_name)\n", " \n", "print('ok')" ] }, { "cell_type": "markdown", "id": "682c45e3-2e07-4fb0-844c-c837b1a2602c", "metadata": {}, "source": [ "## 数据分析" ] }, { "cell_type": "markdown", "id": "8c8faef4-c0d1-441e-ab64-3b8223afa3bd", "metadata": {}, "source": [ "### 获取清理后数据" ] }, { "cell_type": "code", "execution_count": null, "id": "3696d7e1-afb8-4f9d-ba29-9aaa977b52de", "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", "filename = 'data/西藏人员.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "re_ta = {}\n", "list1 = []\n", "#print(\"\\n运动项目信息:\")\n", "filename = 'data/places_result_20230714.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", " \n", " re_ta[user]['sex'] = dict1[user]['sex']\n", " re_ta[user]['birth'] = dict1[user]['birth'].replace('-','/')\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", " re_ta[user][item_name]['得分'] =result[5]\n", "\n", "print(len(re_ta))\n", "liwai = []\n", "for k, v in re_ta.items():\n", " if (len(v)<8 and '身高' in v and '体重' in v) or (len(v)<7 and '身高' not in v and '体重' not in v) :\n", " liwai.append(k)\n", "print(liwai)\n", "for k in liwai:\n", " del re_ta[k]\n", "print(len(re_ta))\n", "filename = 'data/result_xizang.json'\n", "with open(filename,'w') as fl:\n", " json.dump(re_ta, fl) \n", "print('ok')\n", "print(len(re_ta))" ] }, { "cell_type": "markdown", "id": "e9408f20-15cc-4827-bc34-f340f2e8b70f", "metadata": {}, "source": [ "### 计算人员年龄" ] }, { "cell_type": "code", "execution_count": null, "id": "b71c8bf6-2530-425f-9516-8757b40e3dc5", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import datetime\n", "\n", "filename = 'data/result_xizang.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "for k, v in dict1.items(): \n", " birth = v['birth'].split()[0].split('/') \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, 6, 10)-datetime.date(nian,yue,ri)).days\n", " v['age'] = int(days/365)\n", "filename = 'data/result_xizang.json'\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl) \n", "print('ok') " ] }, { "cell_type": "markdown", "id": "36461621-bd49-4eac-b055-9c421604d5fe", "metadata": {}, "source": [ "### 汇总人员信息及成绩" ] }, { "cell_type": "code", "execution_count": null, "id": "0e75cfbb-2b63-4163-831c-933fff1481c2", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "\n", "\n", "items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "\n", "\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "for k,v in dict1.items():\n", " score = 0\n", " i = 0 \n", " for k1,v1 in v.items(): \n", " if k1 in items:\n", " score = score + int(v1['得分'])\n", " i+=1\n", " dict1[k]['score'] = round(score/i,2) \n", "\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl) \n", "print('ok')" ] }, { "cell_type": "markdown", "id": "eb2b6efa-206a-4afe-8380-86970162b519", "metadata": {}, "source": [ "### 计算测试等级" ] }, { "cell_type": "code", "execution_count": null, "id": "99f02e37-3a03-4d7d-a2b9-7bf5563c253c", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "\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", "\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", "\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl) \n", "print('ok')" ] }, { "cell_type": "markdown", "id": "386c1365-81e1-40a5-bcb1-c63b5ab7b52f", "metadata": {}, "source": [ "### 根据年龄汇总人员信息及成绩" ] }, { "cell_type": "code", "execution_count": null, "id": "1435c8af-094d-44b3-a024-af3615c07c21", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "\n", "nld = [[20,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", " \n", " print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i}人,男性:{m}人')" ] }, { "cell_type": "markdown", "id": "0119fb2f-417d-4753-b3da-fac2be8546e3", "metadata": {}, "source": [ "#### 根据年龄汇总人员信息及成绩(男)" ] }, { "cell_type": "code", "execution_count": null, "id": "650cf1eb-8681-4911-9b04-80468fe6bf64", "metadata": { "tags": [] }, "outputs": [], "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}岁平均成绩:{round(score/i,2)}分,人数:{i}人')\n", " else:\n", " print(f'{di}~{gao}岁平均成绩:0分,人数:0人') " ] }, { "cell_type": "markdown", "id": "9a7d06f0-32e4-4148-93f8-a81abfcd81a6", "metadata": {}, "source": [ "#### 根据年龄汇总人员信息及成绩(女)" ] }, { "cell_type": "code", "execution_count": null, "id": "9ccb9b3c-de57-49f4-a4c6-10a24737e857", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "\n", "nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\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}岁平均成绩:{round(score/i,2)}分,人数:{i}人')\n", " else:\n", " print(f'{di}~{gao}岁平均成绩:0分,人数:0人') " ] }, { "cell_type": "markdown", "id": "90f534af-f370-4184-922a-a4a0444f59c3", "metadata": {}, "source": [ "### 计算平均成绩" ] }, { "cell_type": "code", "execution_count": null, "id": "c8cd897e-0d41-4faa-860f-395d42208674", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "\n", "nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]\n", "#filename = '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/165,4)}分,总体:165人')" ] }, { "cell_type": "markdown", "id": "c09369b2-0a21-4a61-b3c8-681906f74250", "metadata": {}, "source": [ "### 计算各年龄段测试等级(女)" ] }, { "cell_type": "code", "execution_count": null, "id": "28b418f2-2324-450f-9684-4df15e012694", "metadata": { "tags": [] }, "outputs": [], "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": "40a7d9fb-cb74-4747-b6fe-9f8bc235d620", "metadata": {}, "source": [ "### 计算各年龄段测试等级(男)" ] }, { "cell_type": "code", "execution_count": null, "id": "a80224fb-1726-4370-9d3d-6e0a27afa8b2", "metadata": { "tags": [] }, "outputs": [], "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": "7870236d-dc80-4c36-ab24-d880155d376b", "metadata": {}, "source": [ "### 计算各项目成绩" ] }, { "cell_type": "code", "execution_count": null, "id": "945b9bec-247b-498b-96f6-a52fabbf6c89", "metadata": { "tags": [] }, "outputs": [], "source": [ "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "items = ['体重','肺活量','握力','坐位体前屈','单脚站立','选择反应时']\n", "for item in items:\n", " score = 0\n", " n = 0\n", " for k, v in dict1.items():\n", " if item in v.keys():\n", " n = n + 1\n", " score =score + int(v[item]['得分'])\n", " print(item,round(score/n,2),n)" ] }, { "cell_type": "markdown", "id": "abba5b74-bfcd-4ec0-b682-10170138ff36", "metadata": {}, "source": [ "### 生成脊椎情况明细" ] }, { "cell_type": "code", "execution_count": null, "id": "da4ba403-92a8-4fd8-8dfc-49802b941fca", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 23, "id": "aebb4eb4-2bcd-411c-8868-292fae38d8b5", "metadata": { "execution": { "iopub.execute_input": "2023-07-19T05:21:21.489267Z", "iopub.status.busy": "2023-07-19T05:21:21.488401Z", "iopub.status.idle": "2023-07-19T05:21:21.503231Z", "shell.execute_reply": "2023-07-19T05:21:21.502005Z", "shell.execute_reply.started": "2023-07-19T05:21:21.489227Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'q1': 34, 'q2': 37, 'q3': 32, 'q4': 86, 'q5': 55, 'q6': 33, 'q7': 63, 'q8': 29, 'q9': 59, 'q10': 14, 'q11': 47, 'q12': 58, 'q13': 14, 'q14': 8, 'q15': 54, 'q16': 52, 'q17': 20, 'q18': 54, 'q19': 43, 'q20': 1, 'q21': 31, 'q22': 22, 'q23': 50, 'q24': 10, 'q25': 2}\n" ] } ], "source": [ "import json\n", "import csv\n", "\n", "dict1 = {}\n", "dict2 = {}\n", "for i in range(1,26):\n", " dict1[f'q{str(i)}'] = 0\n", " \n", "list1 = []\n", "filename = 'data/Survey_20230719.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", "list2 = []\n", "for result in list1:\n", " data = json.loads(result[5].strip())\n", " for k, v in data.items():\n", " if v:\n", " dict1[k] += 1\n", "print(dict1) " ] }, { "cell_type": "code", "execution_count": 22, "id": "ad102064-de18-41aa-9829-b9b398df53d6", "metadata": { "execution": { "iopub.execute_input": "2023-07-19T05:18:48.000423Z", "iopub.status.busy": "2023-07-19T05:18:47.999556Z", "iopub.status.idle": "2023-07-19T05:18:48.014467Z", "shell.execute_reply": "2023-07-19T05:18:48.013436Z", "shell.execute_reply.started": "2023-07-19T05:18:48.000379Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['10422', 'zsyxz1', '', '张斌', '35', '{\"q25\":true,\"q1\":false,\"q2\":false,\"q3\":false,\"q4\":true,\"q5\":true,\"q6\":true,\"q7\":true,\"q8\":false,\"q9\":true,\"q10\":false,\"q11\":false,\"q12\":false,\"q13\":false,\"q14\":false,\"q15\":true,\"q16\":false,\"q17\":false,\"q18\":false,\"q19\":true,\"q20\":false,\"q21\":true,\"q22\":false,\"q23\":false,\"q24\":true}', '2023-06-01 20:00:00']\n", "['10424', 'zsyxz1', '', '余兴见', '85', '{\"q25\":true,\"q1\":false,\"q2\":true,\"q3\":false,\"q4\":true,\"q5\":true,\"q6\":false,\"q7\":true,\"q8\":true,\"q9\":true,\"q10\":false,\"q11\":true,\"q12\":true,\"q13\":false,\"q14\":false,\"q15\":true,\"q16\":true,\"q17\":true,\"q18\":false,\"q19\":false,\"q20\":false,\"q21\":true,\"q22\":true,\"q23\":false,\"q24\":true}', '2023-06-01 20:00:00']\n" ] } ], "source": [ "import json\n", "import csv\n", "\n", "dict1 = {}\n", "dict2 = {}\n", "for i in range(1,26):\n", " dict1[f'q{str(i)}'] = 0\n", " \n", "list1 = []\n", "filename = 'data/Survey_20230719.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", "list2 = []\n", "for result in list1:\n", " data = json.loads(result[5].strip())\n", " for k, v in data.items():\n", " if k == 'q25'and v:\n", " print(result)\n", "#print(dict1) " ] }, { "cell_type": "code", "execution_count": null, "id": "2787bc9f-6492-4b51-9b37-87ac098d93b9", "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 }