当前位置: 首页 > news >正文

Python 检验项目分析与历次报告比对

读取检验项目数据并与历次报告进行比对分析,这里假设检验数据以 CSV 文件格式存储,且每次报告的数据结构相同(包含患者 ID、检验项目名称、检验结果等列)。

import pandas as pddef compare_test_results(current_report_path, historical_report_paths):# 读取当前报告数据current_report = pd.read_csv(current_report_path)# 将患者ID设置为索引,方便后续比对current_report.set_index('患者ID', inplace=True)# 存储历次报告数据的字典historical_reports = {}for path in historical_report_paths:report_name = path.split('/')[-1]  # 获取报告文件名作为字典的键historical_report = pd.read_csv(path)historical_report.set_index('患者ID', inplace=True)historical_reports[report_name] = historical_report# 遍历当前报告中的每个患者for patient_id in current_report.index:current_patient_results = current_report.loc[patient_id]print(f"患者 {patient_id} 的当前检验结果:")print(current_patient_results)# 与历次报告比对for report_name, historical_report in historical_reports.items():if patient_id in historical_report.index:historical_patient_results = historical_report.loc[patient_id]print(f"与 {report_name} 比对结果:")# 比对每个检验项目的结果for test_item in current_patient_results.index:if current_patient_results[test_item]!= historical_patient_results[test_item]:print(f"{test_item}: 当前结果 {current_patient_results[test_item]}, 历史结果 {historical_patient_results[test_item]}")# 当前报告路径
current_report_path = 'current_report.csv'
# 历次报告路径列表
historical_report_paths = ['historical_report_1.csv', 'historical_report_2.csv']compare_test_results(current_report_path, historical_report_paths)

如果文件不存在、文件格式不正确或者读取过程中出现其他 I/O 错误,代码将会抛出异常并中断执行。可以添加try-except语句来捕获这些可能出现的异常,并给出友好的提示信息:

    def compare_test_results(current_report_path, historical_report_paths):try:# 读取当前报告数据current_report = pd.read_csv(current_report_path)# 将患者ID设置为索引,方便后续比对current_report.set_index('患者ID', inplace=True)except FileNotFoundError:print(f"当前报告文件 {current_report_path} 不存在,请检查路径是否正确。")returnexcept pd.errors.ParserError:print(f"当前报告文件 {current_report_path} 格式有误,无法正确读取,请检查文件内容。")returnhistorical_reports = {}for path in historical_report_paths:try:report_name = path.split('/')[-1]  # 获取报告文件名作为字典的键historical_report = pd.read_csv(path)historical_report.set_index('患者ID', inplace=True)historical_reports[report_name] = historical_reportexcept FileNotFoundError:print(f"历史报告文件 {path} 不存在,请检查路径是否正确。")continueexcept pd.errors.ParserError:print(f"历史报告文件 {path} 格式有误,无法正确读取,请检查文件内容。")continue# 后续代码保持不变for patient_id in current_report.index:current_patient_results = current_report.loc[patient_id]print(f"患者 {patient_id} 的当前检验结果:")print(current_patient_results)for report_name, historical_report in historical_reports.items():if patient_id in historical_report.index:historical_patient_results = historical_report.loc[patient_id]print(f"与 {report_name} 比对结果:")for test_item in current_patient_results.index:if current_patient_results[test_item]!= historical_patient_results[test_item]:print(f"{test_item}: 当前结果 {current_patient_results[test_item]}, 历史结果 {historical_patient_results[test_item]}")

结果展示优化:

对于大量的数据或者复杂的检验项目情况,这样的展示方式不够直观和易于分析。可以考虑将比对结果整理成一个新的数据结构(比如DataFrame),然后将其输出为 CSV 文件或者进行更美观的可视化展示(例如使用matplotlib绘制柱状图对比差异等)。将比对结果整理为DataFrame并输出为 CSV 文件(展示添加的相关部分代码):

    import pandas as pddef compare_test_results(current_report_path, historical_report_paths):# 前面读取数据及设置索引部分代码不变all_comparison_results = []for patient_id in current_report.index:current_patient_results = current_report.loc[patient_id]patient_comparison_results = {'患者ID': patient_id}for report_name, historical_report in historical_reports.items():if patient_id in historical_report.index:historical_patient_results = historical_report.loc[patient_id]for test_item in current_patient_results.index:if current_patient_results[test_item]!= historical_patient_results[test_item]:comparison_detail = {'检验项目': test_item,'当前结果': current_patient_results[test_item],'历史结果': historical_patient_results[test_item],'报告名称': report_name}patient_comparison_results.update(comparison_detail)all_comparison_results.append(patient_comparison_results)comparison_df = pd.DataFrame(all_comparison_results)comparison_df.to_csv('comparison_results.csv', index=False)
  • 会生成一个包含所有患者比对结果详细信息的 CSV 文件,方便后续进一步查看和分析。

  • 数据类型一致性检查方面:代码没有对不同报告中同一检验项目的数据类型是否一致进行检查。如果数据类型不一致(比如一个报告中某指标是整数,另一个报告中是字符串),可能会导致比对结果不准确或者出现意外错误。可以添加代码在比对前先检查数据类型一致性

  •     def compare_test_results(current_report_path, historical_report_paths):# 读取当前报告数据及设置索引等前面代码不变historical_reports = {}for path in historical_report_paths:report_name = path.split('/')[-1]historical_report = pd.read_csv(path)historical_report.set_index('患者ID', inplace=True)historical_reports[report_name] = historical_report# 检查数据类型一致性for test_item in current_report.columns:if test_item in historical_report.columns:if current_report[test_item].dtype!= historical_report[test_item].dtype:print(f"检验项目 {test_item} 在当前报告和 {report_name} 中的数据类型不一致,请检查数据。")continue# 后续遍历比对等代码不变


http://www.mrgr.cn/news/79582.html

相关文章:

  • kv类型算子使用
  • Nginx 缓存那些事儿:原理、配置和最佳实践
  • C语言:main函数
  • Next.js 系统性教学:深入理解缓存与数据优化策略
  • 【中间件开发】Redis基础命令详解及概念介绍
  • JAVA设计模式-观察者模式
  • SpringBoot3整合SpringMVC
  • 制造业信息化系统:构建高效生产与管理的数字化基石
  • 阿里云 云产品流转(实现设备与小程序交互)
  • c++ 学习笔记 函数进阶
  • Python知识分享第二十二天-数据结构入门
  • LEGO-GraphRAG框架-图谱检索增强生成框架介绍
  • Ubuntu 安装 web 服务器
  • 11—增加/移除OrCAD的Xnet(保姆级)
  • [HDCTF 2023]LoginMaster
  • AI绘画设计实战-Day2
  • 【Rive】波动文字
  • AES 与 SM4 加密算法:深度解析与对比
  • OpenSearch Dashboard 权限管理:如何设置只读权限
  • 基于SpringBoot+Vue的旅游网站管理系统
  • MySQL--》如何在SQL中巧妙运用函数与约束,优化数据处理与验证?
  • 计算机毕业设计SpringBoot+Vue.js知识图谱课程推荐系统 课程预测系统 mooc慕课课程爬虫 课程大数据 课程数据分析大屏 大数据毕业设计 大
  • windows ping 执行过程分析
  • 【Docker】Linux与Windows系统安装Docker+Docker上简单安装MySQL
  • 黑马redis
  • frida(objection)中x.ts到x.py封装路径