Files
jupyter/数据处理.ipynb
T
2024-03-12 06:18:14 +00:00

2038 lines
59 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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 = 'D4C0CDAF'\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": {},
"source": [
"### 数据组合处理"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import itertools\n",
"\n",
"list1 = ['气虚','阳虚','阴虚','痰湿','湿热','血瘀','气郁','特禀']\n",
"list2 = [0,1,2,3,4,5,6,7]\n",
"\n",
"result=itertools.combinations(list1,7)\n",
"print(len(list(result)))\n"
]
},
{
"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": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import re\n",
"import json\n",
"\n",
"filename = 'data/286种药膳常用中药功能表.txt'\n",
"with open(filename, \"r\", encoding='utf-8') as f: \n",
" data = f.readlines()\n",
"dict1 = {}\n",
"for i in range(0,int(len(data)/7)) : \n",
" s = data[i*7].strip()\n",
" bh = s.split('.')[0]\n",
" name = s.split('.')[1].split('(')[0]\n",
" #print(bh,name)\n",
" id = str(i+1)\n",
" dict1.setdefault(id,{})\n",
" dict1[id]['name'] = name\n",
" for n in range(1,7):\n",
" ss = data[i*7+n].strip()\n",
" p = re.compile(r'【(.*?)】')\n",
" item = re.findall(p,ss)[0]\n",
" content = ss.split('】')[1]\n",
" dict1[id][item] = content\n",
"filename = 'data/286种药膳常用中药功能表.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(dict1, fl, ensure_ascii=False)\n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 性味归经分解"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-12T06:17:21.817297Z",
"iopub.status.busy": "2024-03-12T06:17:21.816466Z",
"iopub.status.idle": "2024-03-12T06:17:21.858558Z",
"shell.execute_reply": "2024-03-12T06:17:21.857796Z",
"shell.execute_reply.started": "2024-03-12T06:17:21.817218Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ok\n"
]
}
],
"source": [
"import re\n",
"import json\n",
"\n",
"filename = 'data/286种药膳常用中药功能表.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"p = re.compile(r'[入归](.*?)经')\n",
"for k, v in dict1.items():\n",
" if '性味归经' in v.keys():\n",
" s = v['性味归经']\n",
" item = re.search(p,s)\n",
" if item is not None:\n",
" ss = item.group()\n",
" sss = re.sub(ss,'',s)\n",
" \n",
" p1 = r'[;:、,。:]+。'\n",
" ssss = re.sub(p1,'。',sss)\n",
" #print(k,ss,ssss)\n",
" dict1[k]['归经'] = ss\n",
" dict1[k]['性味'] = ssss\n",
" else:\n",
" dict1[k]['归经'] = s\n",
" \n",
"filename = 'data/286种药膳常用中药功能表1.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(dict1, fl, ensure_ascii=False)\n",
"print('ok') \n"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-12T06:16:55.349824Z",
"iopub.status.busy": "2024-03-12T06:16:55.349544Z",
"iopub.status.idle": "2024-03-12T06:16:55.378755Z",
"shell.execute_reply": "2024-03-12T06:16:55.376398Z",
"shell.execute_reply.started": "2024-03-12T06:16:55.349799Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 性温,味甘、苦。\n",
"2 性平,味甘。\n",
"3 性凉,味甘、微苦。\n",
"4 性平,味甘、微苦。\n",
"5 性温,味甘。\n",
"6 性温,味苦、甘。\n",
"7 性平,味甘。\n",
"8 性温、味甘。\n",
"9 性平,味甘。\n",
"10 性寒、味苦。\n",
"11 味甘、苦,性寒。\n",
"12 性微温,味甘。\n",
"13 性温,味甘。\n",
"14 性平,味甘。\n",
"15 性温,味甘、辛。\n",
"16 性微温、味甘。\n",
"17 性凉,味苦、酸。\n",
"18 性温,味苦、甘、涩。\n",
"19 性平、味甘。\n",
"20 性温、味甘。\n",
"21 性凉,味甘、苦。\n",
"22 性寒,味甘、苦。\n",
"23 性寒,味甘、苦。\n",
"24 性平,味甘。\n",
"25 性平,味甘、微苦。\n",
"26 性平、味甘。\n",
"27 性平,味甘。\n",
"28 性平、味甘。\n",
"29 性微寒,味甘。\n",
"30 味甘、性平。\n",
"31 性寒、味甘。\n",
"32 性平,味苦、甘。\n",
"33 性寒,味甘、酸。\n",
"34 性寒,味甘。\n",
"35 性平,味咸。\n",
"36 性温,味甘、咸。\n",
"37 性平,味甘、咸。\n",
"38 性温,味甘。\n",
"39 性温、味甘。\n",
"40 性温,味辛、甘。\n",
"41 性温、味辛、有小毒。\n",
"42 性温,味辛。\n",
"43 性温、味辛。\n",
"44 味甘、咸,性温。\n",
"45 性温、味甘。\n",
"46 性温,味甘、咸。\n",
"47 性平、味咸。\n",
"48 性平,味辛、甘。\n",
"49 性温,味甘、微辛。\n",
"50 性微温,味苦、辛。\n",
"51 性温,味辛、甘。\n",
"52 味辛、苦,性温。\n",
"53 性温,味辛、甘。\n",
"54 性温、味辛。\n",
"55 性温、味辛。\n",
"56 性温、味辛。\n",
"57 性温、味辛。\n",
"58 味辛、性温。\n",
"59 性温,味辛、甘。\n",
"60 性温、味辛。\n",
"61 性温,味辛、苦。\n",
"62 性温,味甘、苦。\n",
"63 性温,味辛。\n",
"64 性温、味辛。\n",
"65 性温,味辛。\n",
"66 性凉、味辛。\n",
"67 性平,味辛。\n",
"68 性寒,味甘、咸。\n",
"69 性寒,味甘、苦。\n",
"70 性微寒,味甘、苦。\n",
"71 性微寒、味苦。\n",
"72 性凉,味甘、辛、微苦。\n",
"73 性凉,味甘。\n",
"74 性寒、味苦。\n",
"75 性寒,味辛。\n",
"76 性平,味苦。\n",
"77 性寒,味甘、辛。\n",
"78 性寒,味苦、甘。\n",
"79 性寒、味甘。\n",
"80 性凉,味甘、苦、酸。\n",
"81 性寒,味甘、淡。\n",
"82 性寒,味甘。\n",
"83 性寒、味苦。\n",
"84 性寒、味苦。\n",
"85 性寒,味苦、辛。\n",
"86 性凉,味甘、苦。\n",
"87 性凉,味苦。\n",
"88 性微寒,味苦。\n",
"89 性寒、味甘。\n",
"90 性寒,味苦。\n",
"91 性寒、味苦。\n",
"92 性寒,味苦、甘。\n",
"93 性微寒,味苦、辛。\n",
"94 性寒、味辛。\n",
"95 味甘、酸,性寒。\n",
"96 性平,味甘、淡。\n",
"97 性寒、味苦。\n",
"98 性寒,味苦。\n",
"99 性微寒,味苦,有小毒。\n",
"100 性平、味甘。\n",
"101 性寒,味辛、苦。\n",
"102 性寒,味甘、苦。\n",
"103 性寒,味辛。\n",
"104 性寒,味苦。\n",
"105 性寒、味苦。\n",
"106 性温,味酸涩、甘。\n",
"107 性凉,味甘、淡。\n",
"108 性寒、味苦。\n",
"109 性寒、味苦。\n",
"110 性寒、味苦。\n",
"111 味苦,性寒。\n",
"112 性寒、味苦。\n",
"113 性寒、微苦。\n",
"114 性寒,味苦、咸。\n",
"115 性寒,味苦、涩。\n",
"116 性寒,味甘、苦。\n",
"117 性微寒,味甜、微苦。\n",
"118 性凉,味辛、苦。\n",
"119 性微寒、味苦。\n",
"120 性寒,味甘、咸。\n",
"121 性寒、味苦。\n",
"122 性寒,味苦、微辛。\n",
"123 性寒,味苦、咸。\n",
"124 性寒、味甘。\n",
"125 性凉,味甘、苦。\n",
"126 性寒、味苦。\n",
"127 性温,味辛、苦。\n",
"128 苦,寒。\n",
"129 性平,味苦。\n",
"130 味苦、微辛,性平。\n",
"131 性寒,味苦、辛。\n",
"132 性温、味辛。\n",
"133 性平、味苦。\n",
"134 性温,苦、甘。\n",
"135 性温,味辛、咸。\n",
"136 性凉,味甘。\n",
"137 性温,味甘、咸。\n",
"138 味辛、苦,性微温。\n",
"139 性温,味苦、辛。\n",
"140 性平,味苦、辛。\n",
"141 性平,味苦、辛。\n",
"142 性温,味苦、辛。\n",
"143 性温,味辛。\n",
"144 性平,味辛。\n",
"145 性温,味辛、苦。\n",
"146 性温,味辛、苦。\n",
"147 性温,味辛。\n",
"148 性温、味辛。\n",
"149 性温、味辛。\n",
"150 性温,味辛。\n",
"151 性平,味甘、淡。\n",
"152 性平、味酸。\n",
"153 性寒、味甘。\n",
"154 性凉,味甘。\n",
"155 性平,味甘。\n",
"156 性凉、味甘。\n",
"157 性平、味甘。\n",
"158 性寒,味甘。\n",
"159 性寒,味苦。\n",
"160 性凉,味甘、淡。\n",
"161 性寒,味苦。\n",
"162 性微寒,味苦。\n",
"163 性寒,味辛、苦。\n",
"164 性寒,味甘。\n",
"165 性微寒,味甘、苦。\n",
"166 性寒,味甘、淡。\n",
"167 性平,味苦。\n",
"168 性微寒,味辛、苦。\n",
"169 性凉,味苦、辛。\n",
"170 性平,味苦。\n",
"171 性凉,味甘。\n",
"172 性热,味辛、甘。\n",
"173 性热,味辛、甘。\n",
"174 性热、味辛。\n",
"175 性温,味辛、苦。\n",
"176 性温、味辛。\n",
"177 味辛,性温。\n",
"178 性温、味辛。\n",
"179 性温,味苦、辛。\n",
"180 性微温,味苦、辛。\n",
"181 性寒、味苦。\n",
"182 性平,味辛、微苦、甘。\n",
"183 性温,味苦。\n",
"184 性温、味辛。\n",
"185 性温,味辛。\n",
"186 性寒、味苦。\n",
"187 性温,味辛。\n",
"188 性温,味甘、苦。\n",
"189 性温,味辛、苦。\n",
"190 性微温,味辛。\n",
"191 性平,味苦。\n",
"192 性温,味辛、苦。\n",
"193 性温,味辛、苦。\n",
"194 性温,味酸、甘。\n",
"195 性温,味甘、辛。\n",
"196 性微温、味甘。\n",
"197 性温,味甘。\n",
"198 性平,味辛、甘。\n",
"199 性平、味甘。\n",
"200 性温、味辛。\n",
"201 性微温、味苦。\n",
"202 性温、味辛。\n",
"203 性平,味苦、甘。\n",
"204 性凉,味辛、苦。\n",
"205 性平,味甘、苦。\n",
"206 性温,味苦、甘。\n",
"207 性温,味辛、苦。\n",
"208 性温,味苦、甘。\n",
"209 性凉,味辛、苦。\n",
"210 性温,味辛、苦。\n",
"211 性温,味辛、苦。\n",
"212 性平、味苦。\n",
"213 性温,味苦、辛。\n",
"214 性平,味苦。\n",
"215 性温,味甘。\n",
"216 性平,味甘、咸。\n",
"217 性温、味苦。\n",
"218 性温,味苦、辛。\n",
"219 性平,味咸、苦,有毒。\n",
"220 性凉,味咸。\n",
"221 性凉,味甘。\n",
"222 性微寒,味苦。\n",
"223 性寒、味甘。\n",
"224 性寒,味苦。\n",
"225 性温,味甘、微苦。\n",
"226 性凉,味苦、甜。\n",
"227 性平,味甘、涩。\n",
"228 性温,味苦、辛。\n",
"229 性热,味辛。\n",
"230 性温,味辛。\n",
"231 性温,味辛。\n",
"232 性微温,味苦、辛、咸。\n",
"233 性平,味苦、辛。\n",
"234 性凉,味苦、甘。\n",
"235 性寒,味甘、微苦。\n",
"236 性寒、味甘。\n",
"237 性寒,味苦、咸。\n",
"238 性寒,味咸。\n",
"239 性微寒,味苦、辛。\n",
"240 味辛,性温:、脾经。\n",
"241 性温、味辛。\n",
"242 性平,味甘、苦。\n",
"243 性寒,味甘。\n",
"244 性凉,味苦。\n",
"245 性微温,味甘、苦。\n",
"246 性凉、味甘。\n",
"247 性温,味淡、苦。\n",
"248 性平、味甘。\n",
"249 性平,味甘。\n",
"250 性微温,味苦、辛。\n",
"251 性平,味甘。\n",
"252 性平,味甘、苦。\n",
"253 性微寒,味甘:有毒。\n",
"254 性平,味甘、涩。\n",
"255 性寒,味咸。\n",
"256 性凉,味咸、湿。\n",
"257 性寒,味苦。\n",
"258 性平,味辛、苦。\n",
"259 性凉,味甘、苦。\n",
"260 性寒,味咸。\n",
"261 性凉,味甘。\n",
"262 性平、味甘。\n",
"263 性寒,味咸。\n",
"264 性平,味减、辛。\n",
"265 性平,味咸、辛。\n",
"266 性温,味辛。\n",
"267 性温,味辛、苦。\n",
"268 性微寒,味辛、苦。\n",
"269 性凉,味甘、咸。\n",
"270 性温,味酸。\n",
"271 性温,味酸。\n",
"272 性温,味苦、酸涩。\n",
"273 性温,味酸、涩。\n",
"274 性微温,味酸。\n",
"275 性平,味甘、酸。\n",
"276 性平,味酸、涩。\n",
"277 性平,味咸、甘。\n",
"278 性温,味减、涩。\n",
"279 性平,味甘、涩。\n",
"280 性平,味甘、涩。\n",
"281 性寒,味苦。\n",
"282 性大寒,味甘、苦。\n",
"283 性寒,味苦。\n",
"284 性平、味甘。\n",
"285 性平,味辛、苦、甘。\n",
"286 性平,味甘。\n"
]
}
],
"source": [
"import re\n",
"import json\n",
"\n",
"filename = 'data/286种药膳常用中药功能表.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"p = re.compile(r'[入归](.*?)经')\n",
"for k, v in dict1.items():\n",
" if '性味归经' in v.keys():\n",
" s = v['性味归经']\n",
" item = re.search(p,s)\n",
" #print(item)\n",
" if item is not None:\n",
" ss = item.group()\n",
" sss = re.sub(ss,'',s)\n",
" \n",
" p1 = r'[;:、,。:]+。'\n",
" ssss = re.sub(p1,'。',sss)\n",
" print(k,ssss)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 体质数据处理"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 体质对应数据导入"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"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": "markdown",
"metadata": {},
"source": [
"### 生成雷达图"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from pyecharts.globals import CurrentConfig, NotebookType\n",
"import pyecharts.options as opts\n",
"CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB\n",
"from pyecharts.charts import Radar\n",
"\n",
"\n",
"v1 = [[90, 100, 80, 76, 88, 95]]\n",
"v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]\n",
"\n",
"bar =(\n",
" Radar(init_opts=opts.InitOpts())\n",
" .add_schema(\n",
" schema=[\n",
" opts.RadarIndicatorItem(name=\"销售(sales)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"管理(Administration)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"信息技术(Information Technology)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"客服(Customer Support)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"研发(Development)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"市场(Marketing)\", max_=100),\n",
" ],\n",
" splitarea_opt=opts.SplitAreaOpts(\n",
" is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)\n",
" ),\n",
" textstyle_opts=opts.TextStyleOpts(color=\"#aaa\"),\n",
" )\n",
" .add(\n",
" series_name=\"预算分配(Allocated Budget)\",\n",
" data=v1,\n",
" linestyle_opts=opts.LineStyleOpts(color=\"#CD0000\"),\n",
" )\n",
" \n",
" .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
" .set_global_opts(\n",
" title_opts=opts.TitleOpts(title=\"基础雷达图\"), legend_opts=opts.LegendOpts()\n",
" )\n",
" #.render(\"basic_radar_chart.html\")\n",
" \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": {
"tags": []
},
"outputs": [],
"source": [
"from pyecharts.globals import CurrentConfig, NotebookType\n",
"import pyecharts.options as opts\n",
"CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB\n",
"from pyecharts.charts import Radar\n",
"from pyecharts.render import make_snapshot\n",
"from snapshot_phantomjs import snapshot\n",
"\n",
"\n",
"v1 = [[90, 100, 80, 76, 88, 95]]\n",
"v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]\n",
"\n",
"bar =(\n",
" Radar(init_opts=opts.InitOpts())\n",
" .add_schema(\n",
" schema=[\n",
" opts.RadarIndicatorItem(name=\"销售(sales)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"管理(Administration)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"信息技术(Information Technology)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"客服(Customer Support)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"研发(Development)\", max_=100),\n",
" opts.RadarIndicatorItem(name=\"市场(Marketing)\", max_=100),\n",
" ],\n",
" splitarea_opt=opts.SplitAreaOpts(\n",
" is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)\n",
" ),\n",
" textstyle_opts=opts.TextStyleOpts(color=\"#aaa\"),\n",
" )\n",
" .add(\n",
" series_name=\"预算分配(Allocated Budget)\",\n",
" data=v1,\n",
" linestyle_opts=opts.LineStyleOpts(color=\"#CD0000\"),\n",
" )\n",
" \n",
" .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
" .set_global_opts(\n",
" title_opts=opts.TitleOpts(title=\"基础雷达图\"), legend_opts=opts.LegendOpts()\n",
" )\n",
" #.render(\"basic_radar_chart.html\")\n",
" \n",
")\n",
"make_snapshot(snapshot, bar.render(), \"bar0.png\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import pygal \n",
"\n",
"radar_chart = pygal.Radar()\n",
"radar_chart.title = 'V8 benchmark results'\n",
"radar_chart.x_labels = ['Richards', 'DeltaBlue', 'Crypto', 'RayTrace', 'EarleyBoyer', 'RegExp', 'Splay', 'NavierStokes']\n",
"radar_chart.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])\n",
"\n",
"radar_chart.render_to_png('chart.png')"
]
},
{
"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.12"
}
},
"nbformat": 4,
"nbformat_minor": 4
}