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

【MIMIC数据库教程】十二、使用Python提取所有患者的高密度脂蛋白(HDL)指标

  • 【MIMIC数据库教程】一、MIMIC-IV3.1表格与字段详解(一):Hosp和ICU模块表格整体介绍
  • 【MIMIC数据库教程】二、MIMIC-IV3.1表格与字段详解(二):Hosp住院模块表格详解(上)
  • 【MIMIC数据库教程】三、MIMIC-IV3.1表格与字段详解(三):Hosp住院模块表格详解(中)
  • 【MIMIC数据库教程】四、MIMIC-IV3.1表格与字段详解(四):Hosp住院模块表格详解(下)
  • 【MIMIC数据库教程】五、MIMIC-IV3.1表格与字段详解(五):ICU模块表格详解
  • 【MIMIC数据库教程】六、使用Python读取MIMIC-IV3.1数据库
  • 【MIMIC数据库教程】七、使用Python提取MIMIC-IV患者的真实年龄
  • 【MIMIC数据库教程】八、使用Python读取心电信号并绘制
  • 【MIMIC数据库教程】九、使用Python提取所有患者的尿酸指标(上)
  • 【MIMIC数据库教程】十、使用Python提取所有患者的尿酸指标(下)
  • 【MIMIC数据库教程】十一、使用Python提取所有患者的高敏C反应蛋白指标
  • 【MIMIC数据库教程】十二、使用Python提取所有患者的高密度脂蛋白(HDL)指标

    文章目录

    • 【MIMIC数据库教程】十二、使用Python提取所有患者的高密度脂蛋白(HDL)指标
      • 检索HOSP模块中高密度脂蛋白检查的itemid
      • 从labevents中提取所有存在高密度脂蛋白检查的患者
      • 检索ICU模块中高密度脂蛋白检查的itemid
      • 从chartevents中提取所有存在高密度脂蛋白的患者
      • 合并Hosp和ICU模块的尿酸指标

【MIMIC数据库教程】十二、使用Python提取所有患者的高密度脂蛋白(HDL)指标

摘要: 在本专栏第九和十篇文章中,介绍了从MIMIC-IV数据库的Hosp模块的labevents表中提取所有患者的尿酸指标和ICU模块下患者的尿酸指标,本篇文章介绍如何提取患者的高密度脂蛋白指标,包括ICU模块和Hosp模块,并合并两部分结果。

检索HOSP模块中高密度脂蛋白检查的itemid

hosp模块高密度脂蛋白检查的详细信息包含在d_labitem表中,表中itemid字段表示检查项目,label字段表示检查名称,高密度脂蛋白的标准英文是Cholesterol, HDL或者缩写为HDL,我们检索d_items表中label字段包含Cholesterol, HDL的itemid, 代码如下:

# 查找hosp模块下的高敏C反应蛋白itemid
import pandas as pd

# 读取CSV文件
df = pd.read_csv('d_labitems.csv')
# 检索label中包含'Cholesterol, HDL'的行
filtered_df = df[df['label'].str.contains('Cholesterol, HDL', case=False, na=False)]
# 将DataFrame转换为Markdown表格
markdown_output = filtered_df.to_markdown(index=False)
# 显示Markdown格式的输出
print(markdown_output)



检索结果如下,因此确定itemid为50904。

itemidlabelfluidcategory
50904“Cholesterol, HDL”BloodChemistry

从labevents中提取所有存在高密度脂蛋白检查的患者

在确定高密度脂蛋白检测的itemid=50904后,从labevents表中提取所有存在高密度脂蛋白检查的患者,代码如下:

import pandas as pd

# 定义每次读取的块大小
chunksize = 10**6  # 根据内存情况可以调整
file_path = 'labevents.csv'  # 表格文件路径
output_file = 'HOSP_高密度脂蛋白.csv'  # 输出文件路径

# 初始化一个空的DataFrame,用于存储结果
filtered_data = pd.DataFrame()

# 分块读取CSV文件
for chunk in pd.read_csv(file_path, chunksize=chunksize):
    # 筛选出itemid等于50904的行
    filtered_chunk = chunk[chunk['itemid'] == 50904]
    filtered_data = pd.concat([filtered_data, filtered_chunk], ignore_index=True)

# 将筛选结果保存到新的CSV文件
filtered_data.to_csv(output_file, index=False)

# 输出新文件的行数
print(f"筛选结果已保存到 {output_file}")
print(f"高密度脂蛋白检测记录数:{filtered_data.shape[0]}")



最后得到315909条高密度脂蛋白数据,labevents表格非常的大。文件大小达到了18.4GB,因此需要分块读取,分块读取可以查看之前的文章,每次读取1000000行的数据,然后筛选出itemid等于50904的行,最后将筛选结果保存到新的CSV文件中。

检索ICU模块中高密度脂蛋白检查的itemid

ICU模块高密度脂蛋白检查的详细信息包含在d_items表中,表中itemid字段表示检查项目,label字段表示检查名称,高密度脂蛋白在这个表格中是HDL缩写,我们检索d_items表中label字段包含HDL的itemid, 代码如下:

import pandas as pd

# 读取CSV文件
df = pd.read_csv('d_items.csv')
# 检索label中包含'HDL'的行
filtered_df = df[df['label'].str.contains('HDL', case=False, na=False)]
# 将DataFrame转换为Markdown表格
markdown_output = filtered_df.to_markdown(index=False)
# 显示Markdown格式的输出
print(markdown_output)

检索结果如下,因此确定itemid为220624。

itemidlabelabbreviationlinkstocategoryunitnameparam_typelownormalvaluehighnormalvalue
220624HDLHDLcharteventsLabsnanNumericnannan

从chartevents中提取所有存在高密度脂蛋白的患者

在确定高密度脂蛋白的itemid=220624后,从chartevents中提取所有存在高密度脂蛋白检查的患者,代码如下:

import pandas as pd

# 定义每次读取的块大小
chunksize = 10**6  # 根据内存情况可以调整
file_path = 'chartevents.csv'  # 表格文件路径
output_file = 'icu高密度脂蛋白.csv'  # 输出文件路径

# 初始化一个空的DataFrame,用于存储结果
filtered_data = pd.DataFrame()

# 分块读取CSV文件
for chunk in pd.read_csv(file_path, chunksize=chunksize):
    # 筛选出itemid等于220624的行
    filtered_chunk = chunk[chunk['itemid'] == 220624]
    filtered_data = pd.concat([filtered_data, filtered_chunk], ignore_index=True)

# 将筛选结果保存到新的CSV文件
filtered_data.to_csv(output_file, index=False)

# 输出新文件的行数
print(f"筛选结果已保存到 {output_file}")
print(f"高密度脂蛋白检测记录数:{filtered_data.shape[0]}")


最后得到6551条高密度脂蛋白数据,chartevents表格非常的大。文件大小达到了41.9GB,因此需要分块读取,分块读取可以查看之前的文章,每次读取1000000行的数据,然后筛选出itemid等于220624的行,最后将筛选结果保存到新的CSV文件中。

合并Hosp和ICU模块的尿酸指标

最后将Hosp和ICU模块的高密度脂蛋白指标合并为一个表,并保存为CSV文件,代码如下:

import pandas as pd

# 读取表格 A 和 B
df_A = pd.read_csv('icu高密度脂蛋白.csv')
df_B = pd.read_csv('HOSP_高密度脂蛋白.csv')

# 选择指定字段
df_A = df_A[['subject_id', 'hadm_id', 'charttime', 'storetime', 'value', 'valuenum', 'valueuom', 'warning']]
df_B = df_B[['subject_id', 'hadm_id', 'charttime', 'storetime', 'value', 'valuenum', 'valueuom', 'flag']]

# 将 flag 字段转换为 warning 字段
df_B['warning'] = df_B['flag'].apply(lambda x: 1 if x == 'abnormal' else 0)

# 删除原 flag 字段
df_B = df_B.drop(columns=['flag'])

# 合并两个表格(纵向拼接)
df_merged = pd.concat([df_A, df_B], ignore_index=True)

# 保存合并后的表格
df_merged.to_csv('所有高密度脂蛋白记录.csv', index=False)

print("合并完成,结果保存在所有高密度脂蛋白记录.csv文件中。")

ICU模块和HOSP模块对高密度脂蛋白的字段名称略有不同,因此需要将flag字段转换为warning字段,最后将两个表合并为一个表,并保存为CSV文件。

相关文章:

  • 【C++】 —— 笔试刷题day_6
  • [网络] socket编程--udp_echo_server
  • 深度解析前端面试八股文:核心知识点与高效应对策略
  • BigEvent项目后端学习笔记(一)用户管理模块 | 注册登录与用户信息全流程解析(含优化)
  • docker入门篇
  • 【极光 Orbit·STC8x】05. GPIO库函数驱动LED流动
  • 牛客周赛84 题解 Java ABCDEFG AK实录
  • Tauri + Vite + SvelteKit + TailwindCSS + DaisyUI 跨平台开发详细配置指南(Windows)
  • langchain4j对接阿里云百炼平台
  • Java 学习记录:基础到进阶之路(二)
  • 解锁MySQL 8.0.41源码调试:Mac 11.6+CLion 2024.3.4实战指南
  • 63. Three.js案例-不同材质属性来增强3D对象的真实感
  • [c语言日寄]浮点数的排序
  • 鸿蒙next 多行文字加图片后缀实现方案
  • goweb中文件上传和文件下载
  • [特殊字符] 深度实战:Android 13 系统定制之 Recovery 模式瘦身指南
  • 【Agent】OpenManus-Flow组件详细分析
  • PTA 7-12 排序
  • Linux 线程控制
  • VBA第二十六期 VBA用调试语句做进度条
  • 深圳网站建设可以吗/百度正版下载
  • 北京上地网站建设/亚马逊关键词搜索工具
  • 手机下载视频网站模板下载/软文营销经典案例
  • 学做美食的视频网站/建站abc网站
  • 农村电商运营的基本流程/泉州关键词优化报价
  • 做彩票的网站吗/太原网站优化公司