中草药名方数据集处理:从RAR解压到药味拆解的全流程指南
发布时间:2026/9/9 19:58:14 作者:尧图编辑部 阅读量:1,286

简介中草药名方大全8019条数据压缩包是一份兼顾知识与代码的医药信息数据集意在解决中医药方剂检索分散、数据结构化不足的问题。压缩包共12个文件以PHP页面、txt数据文本和CSS样式为核心辅以dat数据库文件、htaccess配置与url快捷方式体积仅819KB适合PHP整站程序快速部署与二次开发。数据涵盖方剂名称、组成、功效及用法等字段可直接用于搭建中草药名方查询、搜索和展示平台。目前已有599人学习对中医药信息化开发者、PHP初学者及希望将传统方剂转化为可查询数据库的研究人员均有参考价值。通过研读这套源码读者既能掌握PHP数据文件实现信息管理的思路也能获得一批可复用的方剂数据资产。1. 数据资源印象一份中草药名方数据集的价值与潜力拿到“中草药名方大全(8019条数据).rar”这个标题时我的第一反应是这应该是一份典型的民间整理型中医药数据包。8019条数据看起来量级不大但放到中草药名方这个垂直领域已经相当可观。要知道市面上能公开拿到的、清洗过的中药方剂数据动辄号称上万条但真正可用的往往几千条里面还掺杂着大量重复、残缺、格式混乱的条目。这份数据如果整理得当完全能支撑一个小型的中医药知识库、方剂检索工具或者作为中医药科普写作的素材库。我接触过不少类似的数据包也帮人做过几轮清洗和结构化。这类数据最常见的来源是古籍扫描后的手工录入、网络公开资料的爬虫聚合或者某些老中医的个人笔记电子化。标题里特意标注“8019条数据”说明整理者对这个数量是认可的也从侧面反映数据大概率经过了初步去重或筛选。但“数据”这个词本身是模糊的——是Excel表格CSV还是纯文本字段有哪些有没有出处标注这些都要等解压之后才能确认。对于想用这份数据的人来说第一件事不是急着分析而是先搞清楚三件事数据格式是什么字段结构怎么样内容质量靠不靠谱。格式决定了解析方式字段决定了能做什么分析质量则决定了结果的可用性。别嫌麻烦这一步能省掉后面80%的返工时间。2. RAR文件解压与初步探查从压缩包到可用数据的完整路径2.1 解压工具的选择与操作要点RAR格式在Windows环境下最省事的方案就是WinRAR但这个软件是收费的虽然能无限期试用弹窗比较烦人。我习惯用7-Zip开源免费解压RAR完全没问题还支持RAR5格式。macOS用户可以用“The Unarchiver”或者命令行工具unarLinux用户直接用unrar-free或者安装p7zip-full即可。实际操作时有一个细节容易被忽略先用“查看”模式看看压缩包内部的目录结构和文件列表再决定解压到哪个位置。很多数据包内部不是单个文件而是一个文件夹套多层或者同时包含说明文档、原始数据和备份文件。如果一股脑解压到桌面后面整理起来会很难受。我一般会新建一个专门的数据工作目录比如D:\data\tcm_formula把压缩包丢进去后解压到当前目录保持目录结构完整。另外一个关键点是校验压缩包完整性。下载来的文件大小不对或者解压中途报错大概率是传输损坏。WinRAR和7-Zip打开压缩包时会自动检查如果提示“CRC错误”或“文件头损坏”别犹豫重新下载。这个数据包只有8019条记录文件体积通常不会太大但保不齐有人在网盘上传时被截断过这种隐性损坏最坑人——解压能完成但里面的数据可能不完整。2.2 文件格式识别与内容概览解压之后第一件事是看目录结构。常见的格式有这么几种格式特征处理方式Excel(.xlsx/.xls)列结构清晰多字段pandas.read_excel 直接读取CSV/TSV文本逗号或制表符分隔注意编码优先UTF-8或GBKJSON嵌套结构可能含对象数组json.load后做展开处理SQL文件建表语句INSERT数据导入MySQL或SQLite纯文本TXT每条方剂为一段字段靠分隔符需要自己切分结构化根据我收到的同类数据包的经验“中草药名方大全”这类命名最可能是CSV或Excel因为整理者通常是从某个数据库导出或从网页批量复制粘贴到表格里。但也遇到过纯文本格式每条方剂用空行隔开内部再用冒号区分字段比如“方名”“组成”“功效”。这种格式处理起来稍麻烦但也最接近原始资料状态信息量往往更大。先用文本编辑器Notepad或VS Code打开文件看一眼前100行不要直接用Excel双击打开大文件容易卡死或乱码。如果CSV有中文乱码八成是编码问题——Excel另存的CSV多半是ANSI即GBK网页爬下来的多半是UTF-8。用VS Code打开后右下角能显示当前编码点一下可以重新打开选择正确的编码就能看到正常内容。顺便确认分隔符是逗号、分号还是Tab后面写脚本时心里有数。2.3 字段结构与数据字典的建立拿到结构化数据后先列字段名再统计每列的非空值数量、唯一值数量、样例值。这一步叫“建立数据字典”是所有后续分析的地基。比如字段可能是编号、方名、别名、来源、组成、功效、主治、用法、禁忌、备注。重点看“组成”这一列——中药方剂的核心就是组成和剂量很多数据包里“组成”字段是一整段文本比如“人参9g白术9g茯苓9g炙甘草6g”没有拆分成单独的药材列。这是正常的但需要后续做拆解。我当时处理一份类似数据时发现“组成”字段里混着炮制方法、剂量单位、特殊用法比如“黄芪30g炙”“先煎”“冲服”等等。这些东西如果直接当字符串用没问题但要分析药材频次、剂量分布就得精细解析。所以看到字段后别急着高兴先抽查20条记录看看内容拼接是否符合预期。抽查结果能直接反映这份数据的整理水平也决定了你后面投入多少精力去清洗。3. 数据清洗与结构化处理让8019条数据真正“活”起来3.1 去重与补齐别让重复条目污染分析结果不管原始数据怎么整理的第一道工序永远是去重。重复判断不能只看“方名”一列——同一个方名在不同古籍里可能有不同记载比如“四君子汤”出现在《太平惠民和剂局方》和《圣济总录》里的配伍几乎一样但在某些细节上会有加减。简单按方名去重会误删有效信息。建议按“方名组成”的组合字段来判断或者对“组成”这一列做规范化后计算相似度。实操中我常用pandas做初步处理import pandas as pd df pd.read_excel(中草药名方大全.xlsx, sheet_name0) # 查看重复情况 dup_mask df.duplicated(subset[方名, 组成], keepFalse) print(f重复记录数: {dup_mask.sum()}) # 去重保留第一条 df_dedup df.drop_duplicates(subset[方名, 组成], keepfirst)这样处理后可能会有几千条因“组成”格式不统一而漏网的重复比如剂量写不写单位、药名用简称还是全称。对于这种可以做一次字段标准化后再去重。但要注意标准化的尺度不能太过否则会合并掉真正不同的加减方。补齐字段是个体力活但值得做。最典型的是“来源”字段缺失——数据源里可能只有方名和组成没有出处。如果数据量只有几千条可以考虑通过方名去《中医方剂大辞典》或在线数据库反查但工程量大。我更推荐折中方案先标记缺失不强行补全等到具体使用某个方子时再针对性地查证出处。这样既控制投入也不影响整体分析。3.2 药味拆解与规范化从文本到结构化药材列表药味拆解是把“组成”字段从字符串变成结构化列表是这份数据最有价值也最费劲的一步。目标是得到类似“药材名、剂量、单位、炮制、用法”的列表这样才能做药材频次统计、剂量分析、配伍关系挖掘等进阶操作。举个例子某条方剂的组成可能是这样人参9g白术9g茯苓9g炙甘草6g生姜3片大枣4枚这个还算规整但实际数据里会出现括号里的“炙”、“先煎”、“包煎”、“冲服”等标注还有“各等份”“适量”“若干”这种模糊剂量更有全角逗号、分号、中文顿号混用的情况。清洗时我一般按这个顺序处理统一分隔符把所有中文标点、转成英文逗号按逗号切分成数组。去掉首尾空格和不需要的括号注释。用正则表达式分离药材名和剂量部分import re def parse_composition(text): if not isinstance(text, str): return [] text re.sub(r[、;], ,, text) items [x.strip() for x in text.split(,) if x.strip()] result [] for item in items: match re.match(r^(.?)([\d.])\s*(g|克|两|钱|分|斤|枚|片|粒|升|合|.....)?$, item) if match: name match.group(1) dose match.group(2) unit match.group(3) or else: name, dose, unit item, , result.append({药材: name, 剂量: dose, 单位: unit}) return result df[组成列表] df[组成].apply(parse_composition)这只是一个简化版真实场景中正则表达式要覆盖更多情况比如“各三钱”“研末”“酒洗”等。建议先解析100条人工核对一下匹配准确率再全量跑。不要一上来就套复杂规则过度工程化反而容易出错。3.3 数据质量控制抽查校验和异常标记清洗过程中抽测质量是必须的。我习惯随机抽样1%大概80条做人工比对重点看三块药味数量是否合理一个方子3到30味药居多、剂量是否在常见范围有的数据把“三钱”误录成“3g”误差不大但把“半斤”写成“5g”就有问题了、方名和功效是否匹配比如“补中益气汤”功效却写“清热解毒”那很可能原数据张冠李戴。发现异常条目不要急着删先标记一个“异常”标志列然后把异常数据单独保存到一个文件里。原因在于有些数据虽然“看起来不合理”但在特定古籍版本或特殊用法下是成立的。比如某些外用方剂药味极多、剂量极大但它是用来煎汤熏洗的不是口服。这种信息如果删除后续做研究时会少掉重要线索。我一般会在清洗后的最终文件里增加几个字段清洗状态normal / warning / error清洗备注说明具体问题比如“剂量疑似超常”“药名缺失”原始文本保留清洗前的原始内容便于追溯这样既保留了原始数据又方便后续按状态过滤。4. 从静态数据到实用工具三条高性价比应用路径4.1 方剂快速检索与筛选系统数据清洗完成后最简单的应用是做一个“检索工具”。不需要开发复杂的Web应用用Excel的高级筛选已经能做不少事但体验一般。更顺手的方式是用Pythonpandas配合Jupyter Notebook做成一个交互式查询脚本。比如想找所有包含“黄芪”的方剂或者找所有功效为“补气”的方子可以这样def search_herb(df, herb_name): mask df[组成列表].apply(lambda herbs: any(item[药材] herb_name for item in herbs)) return df[mask][[方名, 组成, 功效, 来源]] search_herb(df, 黄芪).head(20)如果要给非技术背景的中医爱好者用可以再做一层用Flask或Streamlit搭一个极简的本地检索页面。Streamlit尤其适合几行代码就能生成一个带输入框和表格输出的界面。投入半天时间就能拥有一个能按“方名”“药材”“功效”模糊查询本地数据库的工具比每次翻Excel高效得多。4.2 药材频次与配伍规律分析8019条方剂足以支撑一些简单的统计分析。最常见的是“高频药材排名”和“药材配伍共现分析”。高频药材能反映出这批方剂群的整体用药偏向比如气虚类方子中黄芪、党参、白术出现频率极高。配伍共现则是看哪些药材经常同时出现比如在补血方中“当归”和“白芍”常成对出现。代码不复杂但要注意剔除剂量为空值的记录并且统一药名规范——比如“山茱萸”和“山萸肉”应统一成标准药名否则统计会分散。这一步需要借助《中国药典》的药材正名表或者自己维护一个别名映射字典。手工映射几百条常用药名是必要的但也可以用简写规则先粗统一再人工校验高频项。4.3 知识科普与内容创作素材库对写作者而言这份数据本身就是一座素材库。写一篇中药科普文章时想找三五个以某味药为核心的方剂直接在表格里筛选就行。比如写“甘草”可以筛选出包含甘草的方剂再按朝代、出处排序看看甘草在不同时代的用量演变。这种从数据中找线索的写法比从书到书摘抄要有说服力得多。我做过一个案例用这份数据筛选出所有包含“生姜”的方剂再统计其剂量范围发现从2片到半斤不等通过追溯原始文献梳理出生姜在不同治证中的用法差异。这种内容特别受读者欢迎因为观点是用数据支撑的而不是拍脑袋。5. 实操过程中的坑与避坑技巧5.1 字符编码与Excel的“好心办坏事”这是数据初处理时最常踩的坑。Excel打开CSV文件后保存会默认把UTF-8编码改成ANSIGBK。如果你后续用Python直接读取不做编码指定就会报UnicodeDecodeError。解决方案是把CSV文件统一转为UTF-8-with-BOM格式这样Excel能正常显示Python读取也稳定。另外Excel还会自动把某些文本列转成日期或数字。比如“3g”会被识别成数字3方名里的“1.0”会被误转为“1”。所以在用Excel检查数据时建议用“数据导入”功能而不是双击打开或者干脆用Notepad、VS Code查看文本内容避免看不到原始字符串。5.2 重复方名的不同剂型问题中医方剂里有大量同名但剂型不同、配方微调的情况比如“丸剂”“散剂”“汤剂”。如果数据里“方名”相同“组成”也相同但“剂型”不同去重时就不该删。在建立去重规则时把“剂型”列考虑进去会稳妥很多。如果没有剂型字段就要看“组成”文本里有没有“为末”“炼蜜为丸”“每服”等字样这些能辅助判断剂型。5.3 剂量单位换算的小心机数据里的剂量单位五花八门g、克、两、钱、分、斤、枚、片、升、合、斗、撮、把等。做统计分析时如果直接按数字相加会得出荒谬结果。需要建立统一的换算体系。参考通行标准1两30g亦有按16两制折算为31.25g1钱3g1分0.3g。但要明白古代度衡量在不同朝代差异很大如果做严谨研究必须参照方剂出处的朝代进行换算。做泛分析的话采用30g/两这个常用近似值即可同时要在结果中注明换算标准避免误导。5.4 备份与版本管理处理数据时始终保留一个“原始数据备份”文件夹不作任何修改。清洗过程产生中间文件按日期命名比如formula_20250224_step1_raw.xlsx、step2_dedup.xlsx、step3_clean.xlsx。别怕文件名长混乱才是最大的成本。我吃过亏直接在原文件上改改了半天下班没保存第二天发现文件损坏只能重新解压再来一遍。从那以后我养成了三步一备份的习惯尤其是不定期运行脚本批量修改数据时备份比什么都重要。5.5 RAR文件本身暗藏的风险最后说一个安全问题。RAR文件可以被加密、注释甚至内嵌恶意脚本7-Zip在解压时会提示是否运行自解压程序。遇到来源不明或解压后出现.exe、.bat、.scr这类可执行文件的压缩包务必小心直接删除比好奇更安全。中草药名方数据包通常只是数据文件但这类资源流传渠道繁杂保不齐有人往里面塞私货。解压前先杀毒扫描一遍永远不是多余操作。根据我个人经验这份8019条数据的“中草药名方大全”如果整理到位它的应用空间远不止“看看有哪些方子”。把数据清洗好、结构化之后既能做搜索引擎式的查询也能做统计分析还能为写作提供稳定可靠的事实出处。你甚至可以把它作为底层数据源结合自然语言处理做更智能的方剂推荐原型比如输入一组症状返回可能相关方剂——那完全是另一层玩法了。最后再分享一个小技巧如果“组成”文本里有“各等分”或“各适量”这类模糊表述不要丢弃把它单独标记。这类方剂往往来自较为古老的医籍剂量记录方式本身就灵活。保留它们能让你在后续做古籍对比研究时多一条线索。数据这种东西整理一次受益长久值得多花点心思。本文还有配套的精品资源点击获取