1449 lines
54 KiB
Plaintext
1449 lines
54 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 基础知识"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 正则表达式分割文本"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import openpyxl\n",
|
|
"import re\n",
|
|
"\n",
|
|
"file_name = 'data/药食材性味归经.xlsx'\n",
|
|
"wb = openpyxl.load_workbook(file_name)\n",
|
|
"sheet = wb.active\n",
|
|
"#sheets = wb.sheetnames\n",
|
|
"\n",
|
|
"list1 = []\n",
|
|
"dict1 = {}\n",
|
|
"mo =r'[。入归].+经$'\n",
|
|
"mo1 = r'[二]'\n",
|
|
"mo2 = r'[,、;]'\n",
|
|
"for n in range(2,sheet.max_row):\n",
|
|
" name = sheet.cell(n,1).value\n",
|
|
" content = re.findall(mo,sheet.cell(n,2).value)\n",
|
|
" if len(content) > 0:\n",
|
|
" l = len(content[0])\n",
|
|
" gj = re.sub(mo1, '', content[0][1:l-1]) \n",
|
|
" list_gj = re.split(mo2,gj)\n",
|
|
" dict1[sheet.cell(n,1).value ] = list_gj\n",
|
|
" #dict1['guijing'] = list_gj\n",
|
|
" \n",
|
|
"filename = './data/药食材归经.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl,ensure_ascii=False) \n",
|
|
"\n",
|
|
"#print(list1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import re\n",
|
|
"\n",
|
|
"s = '消化不良、胃下垂、急性胃炎、慢性胃炎、萎缩性胃炎、神经性呕吐、胆囊炎、胆石症、胆道蛔虫症、胸胁痛等'\n",
|
|
"ss = '健中和胃,消食止呕,理气疏郁,清热利胆。'\n",
|
|
"mo = '等$'\n",
|
|
"mo2 = r'[,、;。]'\n",
|
|
"s1 = re.sub(mo, '', s) \n",
|
|
"list1 = re.split(mo2,s1)\n",
|
|
"if '' in list1:\n",
|
|
" list1.remove('')\n",
|
|
"print(list1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import re\n",
|
|
"t = '5小时10分48秒'\n",
|
|
"m = re.match(r'(.*)小时(.*)分(.*)秒', t)\n",
|
|
"m.groups()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import re\n",
|
|
"t = '10分48秒'\n",
|
|
"list1 = []\n",
|
|
"if '小时' in t and '分' in t:\n",
|
|
" m = re.match(r'(.*)小时(.*)分(.*)秒', t)\n",
|
|
" list1 = [m[1],m[2],m[3]]\n",
|
|
"elif '小时' in t:\n",
|
|
" m = re.match(r'(.*)小时(.*)秒', t)\n",
|
|
" list1 = [m[1],0,m[2]]\n",
|
|
"elif '分' in t:\n",
|
|
" m = re.match(r'(.*)分(.*)秒', t)\n",
|
|
" list1 = [0,m[1],m[2]]\n",
|
|
"print(list1)\n",
|
|
"#m.group()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import re\n",
|
|
"\n",
|
|
"s = '2022-09-28-《气郁组》-视频学习详情_155229'\n",
|
|
"m = re.findall(r'《(.+)》',s)\n",
|
|
"print(m)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 日期计算"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import time\n",
|
|
"\n",
|
|
"birth = '1989-01-25'\n",
|
|
"t_birth = time.strptime(birth,'%Y-%m-%d')\n",
|
|
"days = (time.time() -time.mktime(t_birth))//(365*24*60*60)\n",
|
|
"print(int(days))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 字符串转换"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import binascii\n",
|
|
"\n",
|
|
"gbs = 'C0EEB574'\n",
|
|
"bs = binascii.a2b_hex(gbs)\n",
|
|
"print('bs', bs)\n",
|
|
"print('decode-bs:', bs.decode('gbk'))\n",
|
|
"\n",
|
|
"s = '马立亚'\n",
|
|
"gbcode = s.encode('gbk') # 先转成 bytes格式\n",
|
|
"print('gbcode:', gbcode)\n",
|
|
"gbs = \"\".join([hex(ch)[2:] for ch in gbcode]) #\n",
|
|
"print('gbs:', gbs)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"## 医药体测"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 药膳归经明细文件生成"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"\n",
|
|
"filename = 'data/药膳210927.json'\n",
|
|
"with open(filename,'r') as fl:\n",
|
|
" dict1 = json.load(fl)\n",
|
|
"filename = 'data/药食材归经.json'\n",
|
|
"with open(filename,'r') as fl:\n",
|
|
" dict2 = json.load(fl)\n",
|
|
"k_zy = dict2.keys()\n",
|
|
"dict3 = {}\n",
|
|
"list1 = []\n",
|
|
"for item in dict1:\n",
|
|
" print(item['name'])\n",
|
|
" list1 = []\n",
|
|
" #print(i,item['zy'])\n",
|
|
" for m_zy in item['zy']:\n",
|
|
" if m_zy in k_zy:\n",
|
|
" dict4 = {}\n",
|
|
" print(m_zy,dict2[m_zy])\n",
|
|
" dict4[m_zy] = dict2[m_zy]\n",
|
|
" list1.append(dict4)\n",
|
|
" dict3[item['name']] = list1\n",
|
|
"filename = './data/药膳药食材.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict3, fl,ensure_ascii=False) \n",
|
|
" \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"### 药膳归经权重生成"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import openpyxl\n",
|
|
"import os,sys,shutil\n",
|
|
"\n",
|
|
"filename = './data/药膳药食材.json'\n",
|
|
"with open(filename,'r') as fl:\n",
|
|
" dict1 = json.load(fl)\n",
|
|
"list1 = []\n",
|
|
"for k, v in dict1.items():\n",
|
|
" if len(v) > 0 :\n",
|
|
" dict2 = {}\n",
|
|
" #print(k,v)\n",
|
|
" ys_name = k\n",
|
|
" dict2.setdefault(ys_name,{})\n",
|
|
" for item in v:\n",
|
|
" for k1, v1 in item.items():\n",
|
|
" for item1 in v1:\n",
|
|
" dict2[ys_name].setdefault(item1,0)\n",
|
|
" dict2[ys_name][item1] += 1\n",
|
|
" list1.append(dict2) \n",
|
|
" \n",
|
|
"dict_qz = {}\n",
|
|
"for item in list1:\n",
|
|
" for k, v in item.items():\n",
|
|
" qz = sorted(v.items(), key = lambda kv:(kv[1], kv[0]),reverse=True)\n",
|
|
" dict_qz[k] = qz\n",
|
|
"#print(dict_qz)\n",
|
|
"qz_key = dict_qz.keys()\n",
|
|
"filename = 'data/药膳210927.json'\n",
|
|
"with open(filename,'r') as fl:\n",
|
|
" dict1 = json.load(fl)\n",
|
|
"#print(dict1)\n",
|
|
"wb = openpyxl.Workbook()\n",
|
|
"sheet = wb.active\n",
|
|
"sheet['A1'] = '药膳名称'\n",
|
|
"sheet['B1'] = '来源'\n",
|
|
"sheet['C1'] = '配方'\n",
|
|
"sheet['D1'] = '做法'\n",
|
|
"sheet['E1'] = '功效'\n",
|
|
"sheet['F1'] = '中药成分'\n",
|
|
"sheet['G1'] = '归经权重'\n",
|
|
"\n",
|
|
"i =2\n",
|
|
"for item in dict1:\n",
|
|
" sheet[f'A{i}'] = item['name']\n",
|
|
" sheet[f'B{i}'] = item['source']\n",
|
|
" sheet[f'C{i}'] = item['pf']\n",
|
|
" sheet[f'D{i}'] = item['zf']\n",
|
|
" sheet[f'E{i}'] = item['gx']\n",
|
|
" sheet[f'F{i}'] = ','.join(item['zy'])\n",
|
|
" if item['name'] in qz_key:\n",
|
|
" s = ''\n",
|
|
" for m_gj in dict_qz[item['name']]:\n",
|
|
" s = s+ m_gj[0] +'('+str(m_gj[1])+')'\n",
|
|
" sheet[f'G{i}'] = s\n",
|
|
" else:\n",
|
|
" sheet[f'G{i}'] = '暂无归经'\n",
|
|
" i += 1\n",
|
|
"\n",
|
|
"wb.save('data/test4.xlsx') \n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 体质数据处理"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### 体质对应数据导入"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-19T05:24:25.797002Z",
|
|
"iopub.status.busy": "2023-06-19T05:24:25.796160Z",
|
|
"iopub.status.idle": "2023-06-19T05:24:25.804970Z",
|
|
"shell.execute_reply": "2023-06-19T05:24:25.803852Z",
|
|
"shell.execute_reply.started": "2023-06-19T05:24:25.796962Z"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"{'C-14呼气试验阳性': {'病症对应中医辨证': ['湿热内盛', '脾胃虚弱'], '病症分析': 'C-14呼气试验是一种用于检测幽门螺杆菌感染的方法,通过摄入C-14标记的尿素,然后呼出含有C-14的二氧化碳进行检测。如果呼出的C-14二氧化碳含量高于正常水平即为阳性,表示感染了幽门螺杆菌。'}, 'C反应蛋白(CRP)升高': {'病症对应中医辨证': ['湿热内盛', '气血不畅'], '病症分析': 'C反应蛋白是一种血液中的蛋白质,常常用于衡量炎症的程度。当身体遭受感染、炎症、创伤等影响时,会出现CRP升高的现象。'}, 'V1呈QS型': {'病症对应中医辨证': ['气滞血瘀', '气血不足'], '病症分析': '心电图上V1导联呈现QS型,通常是一种正常的变异,也可能表示心肌损伤或心肌缺血等问题。'}, '癌胚抗原(定量)(CEA)增高': {'病症对应中医辨证': ['气滞血瘀', '痰湿阻滞', '外邪入侵'], '病症分析': 'CEA是一种蛋白质,当人体某些器官、如胃、肝、肺、乳腺、结肠等出现癌变时,会释放出更多的CEA,因此血液中CEA的浓度可能会增加。'}, '胆囊息肉样病变': {'病症对应中医辨证': ['气滞血瘀', '湿热内盛', '痰湿阻滞'], '病症分析': '指在胆囊内部发现了一些类似于息肉的突起,可能会引起胆囊炎、胆管阻塞等问题,需要注意观察和治疗。'}, '动脉血管弹性稍下降': {'病症对应中医辨证': ['气滞血瘀', '气血不畅'], '病症分析': '指动脉血管的弹性略有下降,可能是因为年龄、高血压、高血脂等原因导致,需要注意预防和控制血压和血脂。'}, '动脉血管弹性下降': {'病症对应中医辨证': ['气滞血瘀', '气血不畅', '气血不足'], '病症分析': '动脉血管弹性下降是指血管壁的弹性降低,即血管失去了正常的伸缩性。通常是由于动脉硬化引起的,这会增加心血管疾病的风险。'}, '窦性心动过缓': {'病症对应中医辨证': ['气滞血瘀', '痰湿阻滞'], '病症分析': '这是指心脏的节律过缓,心率在每分钟60次以下,可能会导致头晕、乏力、心慌等症状。'}, '肥胖': {'病症对应中医辨证': ['气滞血瘀', '脏腑失调', '肾气不足', '脾虚湿阻', '痰湿阻滞'], '病症分析': '指身体的脂肪组织过多,体重超过正常范围,可能会导致一些心血管疾病、糖尿病、关节疼痛等问题。'}, '肺大疱': {'病症对应中医辨证': ['肺气不足', '痰湿阻滞', '外邪入侵'], '病症分析': '肺组织内一个或多个气腔突出,通常由于肺泡壁的破裂或肺组织的破坏所致。它们可能会导致肺功能下降等问题。'}, '肺结节': {'病症对应中医辨证': ['气滞血瘀', '肝气郁结', '痰湿阻滞'], '病症分析': '指肺部出现大小不一的结节,可能是良性的肺结节,也有可能是恶性的肺癌。'}, '肺少许慢性炎症': {'病症对应中医辨证': ['气血不畅', '肺气不足', '外邪入侵'], '病症分析': '指肺部有轻微的慢性炎症反应,可能由于吸入异物、感染等原因引起,如果不及时治疗可能会加重。'}, '肺少许炎症': {'病症对应中医辨证': ['肝气郁结', '脾胃虚弱', '肾气不足', '外邪入侵'], '病症分析': '表示肺部存在炎症反应,可能是由于细菌、病毒或其他病原体引起的。'}, '肝囊肿': {'病症对应中医辨证': ['气滞血瘀', '肝气郁结'], '病症分析': '指肝脏内出现液体充填的囊肿,多数为良性病变。肝囊肿通常不会引起明显的症状,但如果囊肿过大或者数量过多时,可能会压迫周围的组织或器官,引起腹痛、不适等症状。'}, '肝实质光点密集': {'病症对应中医辨证': ['气滞血瘀', '情志不畅'], '病症分析': '指在肝脏的超声检查中发现了一些密集的、光点状的区域,可能提示肝脏存在一些异常变化,如脂肪肝等。'}, '肝实质光点稍密集': {'病症对应中医辨证': ['气滞血瘀', '肝气郁结', '湿热内盛', '脾虚湿阻'], '病症分析': '指在肝脏的超声检查中发现了一些密集的、光点状的区域,可能提示肝脏存在一些异常变化,如脂肪肝等。'}, '肝血管瘤': {'病症对应中医辨证': ['气滞血瘀', '肝气郁结', '外邪入侵'], '病症分析': '肝血管瘤是一种良性的肝脏肿瘤,由肝脏内的毛细血管扩张形成。大多数病人无症状,但在少数情况下可能会出现疼痛、肝功能异常等症状。'}, '骨量减少': {'病症对应中医辨证': ['气滞血瘀', '气血不足', '肝肾不足'], '病症分析': '指骨骼中的骨量逐渐减少,骨密度下降,导致骨质疏松症等疾病。骨量减少通常会增加骨折的风险,特别是在老年人群体中,更容易发生危险。'}, '骨质疏松': {'病症对应中医辨证': ['气滞血瘀', '肝气郁结', '湿热内盛', '脾胃虚弱', '气血不足', '肝肾不足'], '病症分析': '指骨密度下降,骨质变薄、变弱,易于骨折。常见于老年人、女性、长期服用激素等情况,可能导致骨折等'}, '甲胎蛋白(AFP)增高': {'病症对应中医辨证': ['气血不足', '情志不畅', '肝肾不足'], '病症分析': '甲胎蛋白是胎儿发育过程中产生的一种蛋白质,成人血液中含量极低。在某些疾病(如肝癌、睾丸癌、卵巢癌等)或正常生理状态下,甲胎蛋白的水平会异常增高。'}, '甲状腺低回声结节': {'病症对应中医辨证': ['气血不畅', '情志不畅', '肝肾不足', '痰湿阻滞'], '病症分析': '指甲状腺内出现低回声的结节,可能是由于甲状腺内的肿瘤、炎症、结节等因素引起的。甲状腺低回声结节通常需要进一步检查,以确定结节的性质。'}, '甲状腺结节': {'病症对应中医辨证': ['气滞血瘀', '湿热内盛'], '病症分析': '甲状腺是一个位于颈部的内分泌腺体,结节是指甲状腺内部出现了一些小的肿块,这些结节可以是良性的,也可能是恶性的。'}, '空腹血糖增高': {'病症对应中医辨证': ['肝气郁结', '湿热内盛', '肾气不足', '脾虚湿阻'], '病症分析': '指在空腹状态下测量的血糖水平。如果空腹血糖水平高于正常范围,可能存在糖尿病或糖尿病前期等情况。'}, '卵巢囊肿': {'病症对应中医辨证': ['气滞血瘀', '肝气郁结'], '病症分析': '卵巢囊肿是一种由于卵巢上皮细胞异常生长引起的囊性病变,通常为单侧性,可能会引起腹部不适、疼痛等症状。'}, '尿潜血阳性': {'病症对应中医辨证': ['湿热内盛', '脾胃虚弱', '肝火旺盛', '气血不畅'], '病症分析': '可能是由于泌尿系统出血所致,提示可能存在尿路感染、泌尿系统结石等问题。'}, '尿糖阳性': {'病症对应中医辨证': ['湿热内盛', '脾虚湿阻', '痰湿阻滞'], '病症分析': '尿糖阳性可能表示糖尿病或其他糖代谢紊乱问题。'}, '前列腺钙化灶': {'病症对应中医辨证': ['气滞血瘀', '湿热内盛', '肾气不足'], '病症分析': '指前列腺组织中出现钙化物质,可能是前列腺炎、前列腺增生等疾病的表现。'}, '前列腺囊肿': {'病症对应中医辨证': ['湿热内盛', '情志不畅'], '病症分析': '前列腺囊肿是一种在前列腺组织内形成的液体囊袋,可能会导致排尿不畅或疼痛等症状。'}, '前列腺稍大并钙化灶': {'病症对应中医辨证': ['气血不畅', '肾气不足', '情志不畅'], '病症分析': '指前列腺体积稍大,并且在前列腺内出现钙化灶。前列腺稍大通常是正常的生理变化,但如果前列腺增生过快,可能会压迫尿道,引起排尿不畅等症状。前列腺钙化灶可能是前列腺炎、前列腺癌等病变的表现。'}, '前列腺特异抗原(PSA)增高': {'病症对应中医辨证': ['湿热内盛', '肾气不足', '痰湿阻滞'], '病症分析': '前列腺特异抗原是一种由前列腺细胞产生的蛋白质,在一些疾病(如前列腺癌、前列腺增生等)或正常生理状态下会出现异常增高。'}, '前列腺增大': {'病症对应中医辨证': ['气滞血瘀', '湿热内盛', '肾气不足'], '病症分析': '前列腺增生是男性普遍面临的问题,随着年龄的增长,前列腺组织逐渐增生,压迫尿道,导致排尿困难等症状。'}, '屈光不正': {'病症对应中医辨证': ['肝气郁结', '脾胃虚弱', '肝火旺盛'], '病症分析': '指眼睛的折射状态不正常,导致近视、远视等视力问题。'}, '乳腺囊肿': {'病症对应中医辨证': ['气滞血瘀', '湿热内盛', '肾气不足', '情志不畅'], '病症分析': '乳腺组织内因液体聚集而形成的一种良性肿块,可能由于荷尔蒙变化等因素引起。一般无症状,可在体检时发现。'}, '肾错构瘤': {'病症对应中医辨证': ['湿热内盛', '痰湿阻滞'], '病症分析': '一种肾部常见的良性肿瘤,由于肾脏某些细胞错构而发生。一般无症状,大多在体检时无意间发现。'}, '肾钙乳症': {'病症对应中医辨证': ['肾气不足'], '病症分析': '肾钙乳症是指肾脏中的某些管道出现结晶,引起尿液中钙的排泄增加,并且与蛋白质、尿酸等物质混合形成小结石。病人通常无症状,但在尿液中发现结石或在X光检查中发现肾结石时会被诊断。'}, '肾结石': {'病症对应中医辨证': ['湿热内盛', '脾胃虚弱', '肾气不足', '情志不畅'], '病症分析': '肾结石是在肾脏内形成的固体结晶,通常由尿中过多的矿物质和盐类组成。它们可能会导致尿路梗阻、尿路感染和肾功能损伤等问题。'}, '肾囊肿': {'病症对应中医辨证': ['气滞血瘀', '肝气郁结', '肾气不足'], '病症分析': '肾囊肿是肾脏结构的一种变异,一般情况下不需要治疗。如果囊肿较大或症状明显,需要考虑治疗。'}, '视力低常': {'病症对应中医辨证': ['肝气郁结', '脾胃虚弱', '肝火旺盛', '肾气不足'], '病症分析': '指近视或远视等屈光不正的状况,导致眼球不能正确聚焦,造成眼睛看不清楚远近的事物,需要佩戴眼镜或隐形眼镜来矫正。'}, '舒张压低': {'病症对应中医辨证': ['脾胃虚弱', '气血不足', '情志不畅', '肝肾不足'], '病症分析': '血压测量时,舒张压指心脏舒张期(心脏放松时)的血压值,低于正常范围可能表示存在低血压、心脏功能不全等问题。'}, '糖化血红蛋白(HbA1c)增高': {'病症对应中医辨证': ['肝气郁结', '脾胃虚弱', '脏腑失调', '气血不足'], '病症分析': 'HbA1c是指红细胞内的血红蛋白与葡萄糖结合后形成的化合物,用于反映过去2-3个月内血糖水平的控制情况。HbA1c增高意味着血糖长期控制不好,可能存在糖尿病或糖尿病前期等情况。'}, '体重偏低': {'病症对应中医辨证': ['湿热内盛', '气血不足'], '病症分析': '体重偏低通常是指身体体重低于正常水平,可能与营养不良、消化吸收障碍、某些疾病等有关。'}, '天门冬氨酸氨基转移酶(AST)增高': {'病症对应中医辨证': ['湿热内盛', '脾胃虚弱', '情志不畅'], '病症分析': '天门冬氨酸氨基转移酶是一种酶,在肝脏和其他器官中都有存在。AST升高可能是由于肝脏、心脏、肌肉等组织受损导致的,提示可能存在相应的疾病。'}, '听力下降': {'病症对应中医辨证': ['肾气不足', '肝肾不足', '肝气郁结', '脾虚湿阻'], '病症分析': '指听觉感受器官和神经系统发生异常,引起听觉功能下降的症状。'}, '心脏杂音': {'病症对应中医辨证': ['气血不畅', '情志不畅'], '病症分析': '指心脏内血流速度、方向或路径发生改变,产生异常的心脏声音。可能由心脏瓣膜异常、心肌病变、先天性心脏疾病等引起。'}, '血肌酐增高': {'病症对应中医辨证': ['肝肾不足'], '病症分析': '血肌酐是由肌肉代谢产生的废物,主要通过肾脏排泄。如果肾脏功能不好,肾脏无法有效清除血液中的肌酐,导致血肌酐水平升高,反映肾功能异常。'}, '血尿酸增高': {'病症对应中医辨证': ['气滞血瘀', '湿热内盛', '脾胃虚弱', '气血不畅', '肝肾不足'], '病症分析': '指血液中尿酸含量超过正常范围,可能会导致痛风等疾病。'}, '血清γ-谷氨酰基转移酶(GGT)增高': {'病症对应中医辨证': ['气滞血瘀', '肝气郁结'], '病症分析': 'GGT和ALT都是肝功能指标,它们的升高可能提示肝脏存在一些病变或损伤,如肝炎、酒精性肝病等。'}, '血清丙氨酸氨基转移酶(ALT)增高': {'病症对应中医辨证': ['肝气郁结', '气血不畅'], '病症分析': 'GGT和ALT都是肝功能指标,它们的升高可能提示肝脏存在一些病变或损伤,如肝炎、酒精性肝病等。'}, '血压高': {'病症对应中医辨证': ['脾胃虚弱', '肝火旺盛', '肝肾不足', '脾虚湿阻', '痰湿阻滞'], '病症分析': '指血液在血管内流动时对血管壁的压力过高,通常会出现头痛、头晕、视力模糊等症状,长期高血压会增加心血管疾病、脑血管疾病等疾病的风险。'}, '血脂异常': {'病症对应中医辨证': ['气滞血瘀', '肝肾不足', '脾虚湿阻'], '病症分析': '当人体内的脂质代谢出现异常时,就会出现血脂异常的情况。这可能是由于遗传、生活方式、饮食习惯、药物影响、疾病等多种因素造成的,会增加心脑血管疾病的风险,引发心脑血管疾病。'}, '咽部充血': {'病症对应中医辨证': ['肝火旺盛', '情志不畅', '外邪入侵'], '病症分析': '咽部充血通常是由于病原体感染引起的一种症状,可能与上呼吸道感染、扁桃体炎等相关。'}, '子宫体结节': {'病症对应中医辨证': ['气滞血瘀', '肝气郁结', '脾胃虚弱'], '病症分析': '子宫体结节是子宫内膜异位症的一种表现,通常位于子宫体的肌层内或外,具有增生性病变的特点。'}}\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import json\n",
|
|
"\n",
|
|
"filename = 'data/tijianbingzheng.txt'\n",
|
|
"with open(filename,'r') as fl:\n",
|
|
" dict1 = json.load(fl)\n",
|
|
"m_key = set()\n",
|
|
"for k, v in dict1.items():\n",
|
|
" for item in v.keys():\n",
|
|
" m_key.add(item)\n",
|
|
"print(dict1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"### 穴位数据导入"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 简单导出简介、内容"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"dict1 = {}\n",
|
|
"filename = 'file/zhongyi/xuewei.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" dict2 = dict(zip(list1, list2))\n",
|
|
" #print(line1['title'],dict1)\n",
|
|
" #print(dict1.keys())\n",
|
|
" #print(line1)\n",
|
|
" dict1.setdefault(line1['title'][0],{})\n",
|
|
" dict1[line1['title'][0]]['简介'] = line1['jj'] \n",
|
|
" dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
"filename = './file/穴位1.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 数据导入文件中"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"\n",
|
|
"dict1 = {}\n",
|
|
"filename = 'file/zhongyi/xuewei.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" list3 = line1['jj']\n",
|
|
" dict2 = dict(zip(list1, list2))\n",
|
|
" dict1.setdefault(line1['title'][0],{})\n",
|
|
" if len(list3) > 0:\n",
|
|
" \n",
|
|
" dict1[line1['title'][0]]['about'] = list3\n",
|
|
" dict1[line1['title'][0]].setdefault('content',{})\n",
|
|
" for k, v in dict2.items():\n",
|
|
" dict1[line1['title'][0]]['content'][k] = v \n",
|
|
" #dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
"filename = './file/穴位1.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 穴位数据导入数据库中"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"#dblist = myclient.list_database_names()\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"xuewei\"]\n",
|
|
"db_list = []\n",
|
|
"filename = 'file/zhongyi/xuewei.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" dict1 = {}\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" list3 = line1['jj']\n",
|
|
" dict2 = dict(zip(list1, list2))\n",
|
|
" dict1['name'] = line1['title'][0]\n",
|
|
" if len(list3) > 0:\n",
|
|
" dict1.setdefault('about',{})\n",
|
|
" for s in list3:\n",
|
|
" item = s.strip().split(':')\n",
|
|
" dict1['about'][item[0].strip()] = item[1].strip()\n",
|
|
" dict1.setdefault('content',{})\n",
|
|
" for k, v in dict2.items():\n",
|
|
" dict1['content'][k] = v \n",
|
|
" #dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
" db_list.append(dict1)\n",
|
|
"x = mycol.insert_many(db_list)\n",
|
|
"print('ok!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 中医症状数据导入数据库中"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"zhongyizhengzhuang\"]\n",
|
|
"db_list = []\n",
|
|
"filename = 'file/zhongyi/zhongyizhengzhuang.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" dict1 = {}\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" list3 = line1['jj']\n",
|
|
" dict2 = dict(zip(list1, list2))\n",
|
|
" dict1['name'] = line1['title'][0]\n",
|
|
" if len(list3) > 0:\n",
|
|
" dict1.setdefault('about',{})\n",
|
|
" for i in range(0,int(len(list3)/2)):\n",
|
|
" dict1['about'][list3[2*i]] = list3[2*i+1]\n",
|
|
" dict1.setdefault('content',{})\n",
|
|
" for k, v in dict2.items():\n",
|
|
" dict1['content'][k] = v \n",
|
|
" #dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
" db_list.append(dict1)\n",
|
|
"x = mycol.insert_many(db_list)\n",
|
|
"print('ok!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 疾病数据导入数据库中"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"jibing\"]\n",
|
|
"db_list = []\n",
|
|
"filename = 'file/zhongyi/jibing.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" dict1 = {}\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" list3 = line1['jj']\n",
|
|
" dict2 = dict(zip(list1, list2))\n",
|
|
" dict1['name'] = line1['title'][0]\n",
|
|
" if len(list3) > 0:\n",
|
|
" dict1.setdefault('about',{})\n",
|
|
" for i in range(0,int(len(list3)/2)):\n",
|
|
" dict1['about'][list3[2*i]] = list3[2*i+1]\n",
|
|
" dict1.setdefault('content',{})\n",
|
|
" for k, v in dict2.items():\n",
|
|
" dict1['content'][k] = v \n",
|
|
" #dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
" db_list.append(dict1)\n",
|
|
"x = mycol.insert_many(db_list)\n",
|
|
"print('ok!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"jp-MarkdownHeadingCollapsed": true,
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 术语数据导入数据库中"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"#dblist = myclient.list_database_names()\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"shuyu\"]\n",
|
|
"db_list = []\n",
|
|
"filename = 'file/zhongyi/shuyu.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" dict1 = {}\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" list3 = line1['jj']\n",
|
|
" dict2 = dict(zip(list1, list2))\n",
|
|
" dict1['name'] = line1['title'][0]\n",
|
|
" if len(list3) > 0:\n",
|
|
" dict1.setdefault('about',{})\n",
|
|
" for s in list3:\n",
|
|
" item = s.strip().split(':')\n",
|
|
" dict1['about'][item[0]] = item[1]\n",
|
|
" dict1.setdefault('content',{})\n",
|
|
" for k, v in dict2.items():\n",
|
|
" dict1['content'][k] = v \n",
|
|
" #dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
" db_list.append(dict1)\n",
|
|
"x = mycol.insert_many(db_list)\n",
|
|
"print('ok!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2021-12-15T10:01:32.917184Z",
|
|
"iopub.status.busy": "2021-12-15T10:01:32.917184Z",
|
|
"iopub.status.idle": "2021-12-15T10:01:32.921185Z",
|
|
"shell.execute_reply": "2021-12-15T10:01:32.921185Z",
|
|
"shell.execute_reply.started": "2021-12-15T10:01:32.917184Z"
|
|
},
|
|
"jp-MarkdownHeadingCollapsed": true,
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 西医症状数据导入数据库中"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"xiyizhengzhuang\"]\n",
|
|
"db_list = []\n",
|
|
"filename = 'file/zhongyi/xiyizhengzhuang.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" dict1 = {}\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" list3 = line1['jj']\n",
|
|
" dict2 = dict(zip(list1, list2))\n",
|
|
" dict1['name'] = line1['title'][0]\n",
|
|
" if len(list3) > 0:\n",
|
|
" dict1.setdefault('about',{})\n",
|
|
" for i in range(0,int(len(list3)/2)):\n",
|
|
" dict1['about'][list3[2*i]] = list3[2*i+1]\n",
|
|
" dict1.setdefault('content',{})\n",
|
|
" for k, v in dict2.items():\n",
|
|
" dict1['content'][k] = v \n",
|
|
" #dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
" db_list.append(dict1)\n",
|
|
"x = mycol.insert_many(db_list)\n",
|
|
"print('ok!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"jp-MarkdownHeadingCollapsed": true,
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 药剂数据导入数据库中"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"#dblist = myclient.list_database_names()\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"yaoji\"]\n",
|
|
"db_list = []\n",
|
|
"filename = 'file/zhongyi/yaoji.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" dict1 = {}\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" list3 = line1['jj'] \n",
|
|
" dict2 = dict(zip(list1, list2)) \n",
|
|
" if len(list3) > 0: \n",
|
|
" jj = {}\n",
|
|
" for s in list3:\n",
|
|
" item = s.strip().split(':')\n",
|
|
" jj[item[0]] = item[1] \n",
|
|
" dict1['name'] = jj['名称']\n",
|
|
" dict1['about'] = jj\n",
|
|
" dict1.setdefault('content',{})\n",
|
|
" for k, v in dict2.items():\n",
|
|
" dict1['content'][k] = v \n",
|
|
" #dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
" db_list.append(dict1)\n",
|
|
"x = mycol.insert_many(db_list)\n",
|
|
"print('ok!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 药膳数据导入数据库中"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"#dblist = myclient.list_database_names()\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"yaoshan\"]\n",
|
|
"db_list = []\n",
|
|
"filename = 'file/zhongyi/yaoshan.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" dict1 = {}\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" list3 = line1['jj']\n",
|
|
" dict2 = dict(zip(list1, list2))\n",
|
|
" dict1['name'] = line1['title'][0]\n",
|
|
" if len(list3) > 0:\n",
|
|
" dict1.setdefault('about',{})\n",
|
|
" for s in list3:\n",
|
|
" item = s.strip().split(':')\n",
|
|
" dict1['about'][item[0]] = item[1]\n",
|
|
" dict1.setdefault('content',{})\n",
|
|
" for k, v in dict2.items():\n",
|
|
" dict1['content'][k] = v \n",
|
|
" #dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
" db_list.append(dict1)\n",
|
|
"x = mycol.insert_many(db_list)\n",
|
|
"print('ok!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"jp-MarkdownHeadingCollapsed": true,
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### 中草药数据导入数据库中"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"zhongcaoyao\"]\n",
|
|
"db_list = []\n",
|
|
"filename = 'file/zhongyi/zhongcaoyao.json'\n",
|
|
"with open(filename,'r',encoding='utf-8') as fl:\n",
|
|
" for line in fl:\n",
|
|
" dict1 = {}\n",
|
|
" line1 = json.loads(re.sub(r'\\xa0','',line))\n",
|
|
" list1 = line1['tables']\n",
|
|
" list2 = line1['contents']\n",
|
|
" list3 = line1['jj']\n",
|
|
" dict2 = dict(zip(list1, list2))\n",
|
|
" dict1['name'] = line1['title'][0]\n",
|
|
" if len(list3) > 0:\n",
|
|
" dict1.setdefault('about',{})\n",
|
|
" for i in range(0,int(len(list3)/2)):\n",
|
|
" dict1['about'][list3[2*i]] = list3[2*i+1]\n",
|
|
" dict1.setdefault('content',{})\n",
|
|
" for k, v in dict2.items():\n",
|
|
" dict1['content'][k] = v \n",
|
|
" #dict1[line1['title'][0]]['内容'] = dict2\n",
|
|
" db_list.append(dict1)\n",
|
|
"x = mycol.insert_many(db_list)\n",
|
|
"print('ok!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"jp-MarkdownHeadingCollapsed": true,
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"### 穴位隶属整理"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"xuewei\"]\n",
|
|
"dict1 = {}\n",
|
|
"list1 = []\n",
|
|
"for x in mycol.find({},{ \"_id\": 0,\"name\":1,\"about.隶属\":1 }):\n",
|
|
" if 'about' in x.keys():\n",
|
|
" m_ls = x['about']['隶属']\n",
|
|
" dict1.setdefault(m_ls,[])\n",
|
|
" dict1[m_ls].append(x['name'])\n",
|
|
"'''\n",
|
|
"filename = './file/穴位隶属.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl) \n",
|
|
"'''\n",
|
|
"for item in dict1.keys():\n",
|
|
" print(item)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"### 穴位功能、主治统计"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"xuewei\"]\n",
|
|
"\n",
|
|
"dict1 = {}\n",
|
|
"mo = '等$'\n",
|
|
"mo2 = r'[,、;。]'\n",
|
|
"\n",
|
|
"for x in mycol.find({},{ \"_id\": 0,\"name\":1,\"about\":1 }):\n",
|
|
" dict1.setdefault(x['name'],{})\n",
|
|
" if '主治' in x['about'].keys():\n",
|
|
" #dict1[x['name']].setdefault('主治',[])\n",
|
|
" s = x['about']['主治']\n",
|
|
" s1 = re.sub(mo, '', s)\n",
|
|
" list1 = re.split(mo2,s1)\n",
|
|
" if '' in list1:\n",
|
|
" list1.remove('')\n",
|
|
" dict1[x['name']]['主治'] = list1\n",
|
|
" if '功能' in x['about'].keys():\n",
|
|
" #dict1[x['name']].setdefault('主治',[])\n",
|
|
" s = x['about']['功能']\n",
|
|
" s1 = re.sub(mo, '', s)\n",
|
|
" list1 = re.split(mo2,s1)\n",
|
|
" if '' in list1:\n",
|
|
" list1.remove('')\n",
|
|
" dict1[x['name']]['功能'] = list1\n",
|
|
" \n",
|
|
"\n",
|
|
"filename = './file/穴位主治功能统计.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl) \n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"### 穴位数据导出Excel表"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import openpyxl\n",
|
|
"\n",
|
|
"filename = 'file/穴位.json'\n",
|
|
"with open(filename,'r') as fl:\n",
|
|
" dict1 = json.load(fl)\n",
|
|
"filename = 'file/穴位简要情况表.xlsx'\n",
|
|
"wb = openpyxl.Workbook()\n",
|
|
"sheet = wb.active\n",
|
|
"sheet['A1'] = '穴位名称'\n",
|
|
"sheet['B1'] = '隶属'\n",
|
|
"sheet['C1'] = '位置'\n",
|
|
"sheet['D1'] = '主治'\n",
|
|
"sheet['E1'] = '功能'\n",
|
|
"sheet['F1'] = '操作'\n",
|
|
"sheet['G1'] = '主要配伍'\n",
|
|
"i = 2\n",
|
|
"for k, v in dict1.items():\n",
|
|
" sheet[f'A{i}'] = k\n",
|
|
" sheet[f'B{i}'] = v['简介'][0].split(':')[1]\n",
|
|
" sheet[f'C{i}'] = v['简介'][1].split(':')[1]\n",
|
|
" sheet[f'D{i}'] = v['简介'][2].split(':')[1]\n",
|
|
" sheet[f'E{i}'] = v['简介'][3].split(':')[1]\n",
|
|
" sheet[f'F{i}'] = v['简介'][4].split(':')[1]\n",
|
|
" sheet[f'G{i}'] = v['简介'][5].split(':')[1] \n",
|
|
" i += 1\n",
|
|
"wb.save(filename) \n",
|
|
"print('ok!')\n",
|
|
"\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"jp-MarkdownHeadingCollapsed": true,
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"### 术语数据处理"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"shuyu\"]\n",
|
|
"dict1 = {}\n",
|
|
"list1 = []\n",
|
|
"for x in mycol.find({},{ \"_id\": 0,\"name\":1,\"about\":1 }):\n",
|
|
" if '类别' in x['about'].keys():\n",
|
|
" m_lb = x['about']['类别'].replace(' ','')\n",
|
|
" else:\n",
|
|
" m_lb = '无类别'\n",
|
|
" dict1.setdefault(re.sub('\\xa0+','',m_lb),[])\n",
|
|
" dict1[m_lb].append(x['name'])\n",
|
|
"filename = './file/术语类别.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl) \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"jp-MarkdownHeadingCollapsed": true,
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"### 疾病数据处理"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"jibing\"]\n",
|
|
"dict1 = {}\n",
|
|
"list1 = []\n",
|
|
"for x in mycol.find({},{ \"_id\": 0,\"name\":1,\"about\":1 }):\n",
|
|
" if '疾病分类' in x['about'].keys():\n",
|
|
" m_lb = x['about']['疾病分类'].replace(' ','')\n",
|
|
" else:\n",
|
|
" m_lb = '无类别'\n",
|
|
" dict1.setdefault(re.sub('\\xa0+','',m_lb),[])\n",
|
|
" dict1[m_lb].append(x['name'])\n",
|
|
"filename = './file/疾病类别.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 中草药数据处理"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"zhongcaoyao\"]\n",
|
|
"\n",
|
|
"dict1 = {}\n",
|
|
"mo = '等$'\n",
|
|
"mo2 = r'[,、;。]'\n",
|
|
"\n",
|
|
"for x in mycol.find({},{ \"_id\": 0,\"name\":1,\"about\":1 }):\n",
|
|
" dict1.setdefault(x['name'],{})\n",
|
|
" if '别名' in x['about'].keys():\n",
|
|
" #dict1[x['name']].setdefault('主治',[])\n",
|
|
" s = x['about']['别名']\n",
|
|
" s1 = re.sub(mo, '', s)\n",
|
|
" list1 = re.split(mo2,s1)\n",
|
|
" if '' in list1:\n",
|
|
" list1.remove('')\n",
|
|
" dict1[x['name']]['别名'] = list1\n",
|
|
" if '功能' in x['about'].keys():\n",
|
|
" #dict1[x['name']].setdefault('主治',[])\n",
|
|
" s = x['about']['功能']\n",
|
|
" s1 = re.sub(mo, '', s)\n",
|
|
" list1 = re.split(mo2,s1)\n",
|
|
" if '' in list1:\n",
|
|
" list1.remove('')\n",
|
|
" dict1[x['name']]['功能'] = list1\n",
|
|
" if '主治' in x['about'].keys():\n",
|
|
" #dict1[x['name']].setdefault('主治',[])\n",
|
|
" dict1[x['name']]['主治'] = s = x['about']['主治']\n",
|
|
" \n",
|
|
"\n",
|
|
"filename = './file/中草药主治功能统计.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 药剂数据处理"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"yaoji\"]\n",
|
|
"\n",
|
|
"dict1 = {}\n",
|
|
"mo = '等$'\n",
|
|
"mo2 = r'[,、;。]'\n",
|
|
"\n",
|
|
"for x in mycol.find({},{ \"_id\": 0,\"name\":1,\"about\":1 }):\n",
|
|
" dict1.setdefault(x['name'],{})\n",
|
|
" if '功用' in x['about'].keys():\n",
|
|
" #dict1[x['name']].setdefault('主治',[])\n",
|
|
" s = x['about']['功用']\n",
|
|
" s1 = re.sub(mo, '', s)\n",
|
|
" list1 = re.split(mo2,s1)\n",
|
|
" if '' in list1:\n",
|
|
" list1.remove('')\n",
|
|
" dict1[x['name']]['功用'] = list1\n",
|
|
" if '主治' in x['about'].keys():\n",
|
|
" #dict1[x['name']].setdefault('主治',[])\n",
|
|
" dict1[x['name']]['主治'] = s = x['about']['主治']\n",
|
|
" \n",
|
|
"\n",
|
|
"filename = './file/药剂主治功用统计.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 药膳数据处理"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import re\n",
|
|
"import pymongo\n",
|
|
"\n",
|
|
"myclient = pymongo.MongoClient('mongodb://10.147.17.6:27017/')\n",
|
|
"mydb = myclient['dayi']\n",
|
|
"mycol = mydb[\"yaoshan\"]\n",
|
|
"\n",
|
|
"dict1 = {}\n",
|
|
"mo = '等$'\n",
|
|
"mo2 = r'[,、;。]'\n",
|
|
"\n",
|
|
"for x in mycol.find({},{ \"_id\": 0,\"name\":1,\"about\":1 }):\n",
|
|
" dict1.setdefault(x['name'],{})\n",
|
|
" if '功效' in x['about'].keys():\n",
|
|
" #dict1[x['name']].setdefault('主治',[])\n",
|
|
" s = x['about']['功效']\n",
|
|
" s1 = re.sub(mo, '', s)\n",
|
|
" list1 = re.split(mo2,s1)\n",
|
|
" if '' in list1:\n",
|
|
" list1.remove('')\n",
|
|
" dict1[x['name']]['功效'] = list1\n",
|
|
" if '相关疾病' in x['about'].keys():\n",
|
|
" #dict1[x['name']].setdefault('主治',[])\n",
|
|
" s = x['about']['相关疾病']\n",
|
|
" s1 = re.sub(mo, '', s)\n",
|
|
" list1 = re.split(mo2,s1)\n",
|
|
" if '' in list1:\n",
|
|
" list1.remove('')\n",
|
|
" dict1[x['name']]['相关疾病'] = list1 \n",
|
|
" \n",
|
|
"\n",
|
|
"filename = './file/药膳功能统计.json'\n",
|
|
"with open(filename,'w') as fl:\n",
|
|
" json.dump(dict1, fl) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"### 北海炼化体检数据提取"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"import openpyxl\n",
|
|
"import os,sys,shutil\n",
|
|
"\n",
|
|
"file_name = 'file/中石化北海炼化2020年团体体检报告.xlsx'\n",
|
|
"wb = openpyxl.load_workbook(file_name)\n",
|
|
"sheet = wb.active\n",
|
|
"dict1 = {}\n",
|
|
"for n in range(1,sheet.max_row+1):\n",
|
|
" bh = sheet.cell(n,2).value\n",
|
|
" name = sheet.cell(n,3).value\n",
|
|
" xb = sheet.cell(n,4).value\n",
|
|
" nl = sheet.cell(n,5).value\n",
|
|
" bz = sheet.cell(n,7).value\n",
|
|
" dict1.setdefault(bh,{})\n",
|
|
" dict1[bh]['姓名'] = name\n",
|
|
" dict1[bh]['性别'] = xb\n",
|
|
" dict1[bh]['年龄'] = nl\n",
|
|
" dict1[bh].setdefault('病症',[])\n",
|
|
" dict1[bh]['病症'].append(bz.strip())\n",
|
|
"wb.close()\n",
|
|
"#print(dict1)\n",
|
|
" \n",
|
|
" \n",
|
|
"filename = 'file/中石化北海炼化2020年体检人员情况表.xlsx'\n",
|
|
"wb = openpyxl.Workbook()\n",
|
|
"sheet = wb.active\n",
|
|
"sheet['A1'] = '体检编号'\n",
|
|
"sheet['B1'] = '姓名'\n",
|
|
"sheet['C1'] = '性别'\n",
|
|
"sheet['D1'] = '年龄'\n",
|
|
"sheet['E1'] = '异常名称'\n",
|
|
"\n",
|
|
"i =2\n",
|
|
"for k, v in dict1.items():\n",
|
|
" sheet[f'A{i}'] = k\n",
|
|
" sheet[f'B{i}'] = v['姓名']\n",
|
|
" sheet[f'C{i}'] = v['性别']\n",
|
|
" sheet[f'D{i}'] = v['年龄']\n",
|
|
" sheet[f'E{i}'] = ','.join(v['病症']) \n",
|
|
" i += 1\n",
|
|
"wb.save(filename)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## excel数据读取"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import openpyxl\n",
|
|
"import json\n",
|
|
"\n",
|
|
"filename = 'data/长岭全成绩.xlsx'\n",
|
|
"wb = openpyxl.load_workbook(filename)\n",
|
|
"sheet = wb.active\n",
|
|
"data1 =list(sheet.values)\n",
|
|
"del data1[0]\n",
|
|
"print(data1)\n",
|
|
"#for data in data1:\n",
|
|
"# print(data)\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 图表生成"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 高考一分一段表生成"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from pyecharts.globals import CurrentConfig, NotebookType\n",
|
|
"CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB\n",
|
|
"from pyecharts import options as opts\n",
|
|
"from pyecharts.charts import Bar,Line\n",
|
|
"import pyecharts.options as opts\n",
|
|
"from pyecharts.faker import Faker\n",
|
|
"import json\n",
|
|
"\n",
|
|
"list_x = []\n",
|
|
"list_y = []\n",
|
|
"filename = 'data/17-21年一分一段表.json'\n",
|
|
"with open(filename,'r') as fl:\n",
|
|
" m_xx = json.load(fl)\n",
|
|
"dict1 =m_xx['2020']['z']\n",
|
|
"for i in sorted(dict1,reverse=True): #降序\n",
|
|
" list_x.append(i)\n",
|
|
" list_y.append(dict1[i]['num_person'])\n",
|
|
" #print(i,dict1[i]['num_person'])\n",
|
|
"bar = (\n",
|
|
" Bar()\n",
|
|
" .add_xaxis(list_x)\n",
|
|
" .add_yaxis(\"2020年一分一段表\", list_y, category_gap=0, color=Faker.rand_color())\n",
|
|
" .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
|
|
" .set_global_opts(title_opts=opts.TitleOpts(title=\"Bar-直方图\"))\n",
|
|
" .render(\"bar_histogram2020.html\")\n",
|
|
"# .set_global_opts(title_opts=opts.TitleOpts(title=\"运动步幅及步频\", subtitle=\"户外运动\"),)\n",
|
|
")\n",
|
|
"#bar.load_javascript()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"bar.render_notebook()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from pyecharts.globals import CurrentConfig, NotebookType\n",
|
|
"CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB\n",
|
|
"from pyecharts import options as opts\n",
|
|
"from pyecharts.charts import Bar,Line\n",
|
|
"import pyecharts.options as opts\n",
|
|
"from pyecharts.faker import Faker\n",
|
|
"import json\n",
|
|
"\n",
|
|
"x_2021 = []\n",
|
|
"y_2021 = []\n",
|
|
"x_2020 = []\n",
|
|
"y_2020 = []\n",
|
|
"filename = 'data/17-21年一分一段表.json'\n",
|
|
"with open(filename,'r') as fl:\n",
|
|
" m_xx = json.load(fl)\n",
|
|
"dict1 =m_xx['2021']['z']\n",
|
|
"for i in sorted(dict1,reverse=True): #降序\n",
|
|
" x_2021.append(i)\n",
|
|
" y_2021.append(dict1[i]['num_person'])\n",
|
|
"dict1 =m_xx['2020']['z']\n",
|
|
"for i in sorted(dict1,reverse=True): #降序\n",
|
|
" x_2021.append(i)\n",
|
|
" y_2021.append(dict1[i]['num_person'])\n",
|
|
" #print(i,dict1[i]['num_person'])\n",
|
|
"bar = (\n",
|
|
" Bar()\n",
|
|
" .add_xaxis(list_x)\n",
|
|
" .add_yaxis(\"人数\", list_y, category_gap=0, color=Faker.rand_color())\n",
|
|
" .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
|
|
" .set_global_opts(title_opts=opts.TitleOpts(title=\"Bar-直方图\"))\n",
|
|
" .render(\"bar_histogram.html\")\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"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.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|