精准医学的数据平台化与Python编程实战(中)

作者:Allen_Lyb日期:2026/5/1

在这里插入图片描述

第五章:高性能数据处理与分析

5.1 使用Pandas进行临床数据清洗与特征工程

1import pandas as pd
2import numpy as np
3from sklearn.impute import SimpleImputer
4from sklearn.preprocessing import StandardScaler, OneHotEncoder
5
6# 加载模拟临床数据
7df = pd.read_csv('clinical_cohort.csv')
8
9# 处理缺失值
10num_imputer = SimpleImputer(strategy='median')
11cat_imputer = SimpleImputer(strategy='most_frequent')
12
13num_cols = df.select_dtypes(include=np.number).columns.tolist()
14cat_cols = df.select_dtypes(include='object').columns.tolist()
15
16df[num_cols] = num_imputer.fit_transform(df[num_cols])
17df[cat_cols] = cat_imputer.fit_transform(df[cat_cols])
18
19# 构建药物特征: 合并多条处方为一个特征向量
20prescriptions = pd.DataFrame({
21   
22   
23    'patient_id': [1,1,2,2],
24    'drug_name': ['Metformin', 'Glipizide', 'Metformin', 'Insulin'],
25    'dose': [500, 5, 1000, 10]
26})
27# One-hot编码药物类型
28drug_dummies = pd.get_dummies(prescriptions['drug_name'])
29drug_features = drug_dummies.groupby(prescriptions['patient_id']).sum()
30df = df.merge(drug_features, left_on='patient_id', right_index=True, how='left')
31
32# 时间窗口特征
33labs = pd.DataFrame({
34   
35   
36    'patient_id': [1,1,2],
37    'lab_date': pd.to_datetime(['2024-01-10', '2024-02-15', '2024-03-01']),
38    'hba1c': [7.2, 6.8, 8.1]
39})
40# 计算每个患者最近一次HbA1c与变化趋势
41labs_sorted = labs.sort_values(['patient_id', 'lab_date'])
42labs_sorted['prev_hba1c'] = labs_sorted.groupby('patient_id')['hba1c'].shift(1)
43labs_sorted['hba1c_trend'] = labs_sorted['hba1c'] - labs_sorted['prev_hba1c']
44latest_labs = labs_sorted.groupby('patient_id').last().reset_index()
45df = df.merge(latest_labs[['patient_id', 'hba1c', 'hba1c_trend']], on='patient_id', how='left')
46
47print(df.head())
48

5.2 分布式处理:Dask与PySpark

当数据超过单机内存时,使用Dask(类似Pandas API)或PySpark。

Dask DataFrame
1import dask.dataframe as dd
2import dask.array as da
3from dask.distributed import Client
4
5client = Client(n_workers=4, threads_per_worker=2, memory_limit='4GB')
6print(client)
7
8# 读取大型CSV
9ddf = dd.read_csv('s3://my-bucket/genomics/phenotypes/*.csv',
10                  storage_options={
11   
12   
13                      'key': 'minioadmin',
14                      'secret': 'minioadmin',
15                      'client_kwargs': {
16   
17   'endpoint_url': 'http://minio:9000'}
18                  })
19# 过滤和聚合
20filtered = ddf[ddf['age'] > 18]
21grouped = filtered.groupby('disease').agg({
22   
23   'cost': 'mean', 'patient_id': 'count'})
24result = grouped.compute

精准医学的数据平台化与Python编程实战(中)》 是转载文章,点击查看原文


相关推荐


每天刷十几个平台的热榜太累了?我用一个页面全部搞定
扑克中的黑桃A2026/4/22

这里写目录标题 前言1.什么是DailyHot?2.在飞牛OS上部署DailyHot3.docker部署DailyHot4.使用DailyHot5.安装cpolar内网穿透6.配置公网地址7.保留固定公网地址总结 前言 每天看热点,你要打开几个 App? 微博、知乎、Hacker News、V2EX、豆瓣、少数派……每个平台都有热榜,每个平台都得点进去刷一遍。等把这些都刷完,半个小时过去了,真正有用的信息反而被稀释了。 而且还有个更现实的问题——你在公司想看看知乎热榜发生了啥,


LangGraph 入门到精通0x02:基础 API (二)
chaors2026/4/14

前言 今天继续学习一些 LangGraph 常用到的基础 API。废话少说上干货。 .点语法 Graph 的创建可以使用看着更简洁的 .语法。 graph = ( StateGraph(State) .add_node(a) .add_node(b) .add_edge(START, "a") .add_edge("a", "b") .add_edge("b", END) .compile() ) 步骤序列 StateGraph(St


你的 Android App 可能白白损失了 35% 的性能——R8 全模式配置详解
陆业聪2026/4/6

字节跳动的工程师优化启动速度时,可能花了数周分析 trace、改代码;Monzo 的团队却只改了一行配置,性能指标全线提升了 35%。这不是段子,是 Google 官方 blog 2026 年 3 月底发出来的案例。 问题来了:你的项目,是不是也开着 R8,但根本没用对? R8 到底做了什么——大多数人理解是错的 很多人对 R8 的理解停留在「代码混淆 + 压缩」。打开 minifyEnabled true,觉得任务完成了。 但 R8 实际上分两种工作模式: • 兼容模式(Compatibili


核心概念层——深入理解 Agent 是什么
想打游戏的程序猿2026/3/28

1 Agent vs ChatBot:从根本上理解区别 1.1 一个直观的例子 假设你对 AI 说:"帮我分析一下我们公司上周的销售数据,找出表现最好的产品,并给团队发一封总结邮件"。 ChatBot 的反应: ChatBot: "要分析销售数据,你可以按以下步骤操作: 1. 打开数据库,执行 SQL 查询获取上周的销售记录 2. 使用 Excel 或 Python 进行数据汇总 3. 找出销售额最高的产品 4. 撰写邮件总结发送给团队 你需要我帮你写 SQL 查询语句吗?" → ChatB


配置钉钉龙虾OpenClaw机器人调用OpenMetadata
光于前裕于后2026/3/20

目录 一、前言1️⃣钉钉(DingTalk)2️⃣OpenClaw3️⃣OpenMetadata4️⃣MCP(Model Context Protocol) 二、安装OpenClaw三、配置OpenClaw钉钉机器人四、调用OpenMetadata MCP 一、前言 先介绍下这四个工具/协议的定位与核心能力,本文将从零开始配置。 1️⃣钉钉(DingTalk) 阿里巴巴旗下的企业协作平台,2014年上线,是中国市场份额最大的企业即时通讯与办公套件之一。 核心能


10分钟搭建 Windows + WSL + Codex环境
Lei_official2026/3/12

并不是 AI 替代人,而是会用 AI 的人替代不会用 AI 的人。 我的大模型使用历程 从2023年秋季,我开始使用对话型的大模型,提升工作和学习的效率,以及回答一些生活上的常识问题。最开始是 ChatGPT 的免费版本,随着使用频率提高,慢慢会遇到问答超过上限的情况。随后便开通了Plus订阅直至今日。期间也曾使用过 Deepseek、Gemini、Minimax 等等,不过最主要的仍然是 ChatGPT,个人感觉它在回答的质量、速度、上下文方面体验最好。 在这段历程里,网页对话型 的 AI


MySQL中 SHOW FULL PROCESSLIST` 输出中 `State` 列的所有可能值
左Python右Java2026/3/4

SHOW FULL PROCESSLIST输出中State` 列的所有可能值,以及这些值代表的含义,这能帮你精准判断数据库连接的状态(包括锁相关、执行状态等)。 一、State 列核心分类及含义 State 列描述了当前线程正在执行的操作状态,不同状态对应不同的数据库行为,以下是最常见且实用的分类(按场景划分): 1. 锁相关状态(排查锁表核心) 这是你最关心的锁表相关状态,直接反映锁等待 / 阻塞: 状态值含义Waiting for t


326. Java Stream API - 实现自定义的 toList() 与 toSet() 收集器
yaoxin5211232026/2/23

文章目录 326. Java Stream API - 实现自定义的 `toList()` 与 `toSet()` 收集器📦 实现一个自定义 `toList()` 收集器🚀 使用我们的 `ToList` 收集器🔄 将其改造成 `toSet()` 收集器✅ 修改 1:使用 `HashSet` 作为容器✅ 修改 2:声明该收集器是无序的 🧪 `ToSet` 收集器完整实现示例🎯 总结一下关键点🧠 小贴士 326. Java Stream API - 实现自定义的 toL


Kafka 生产者与消费者配置详解
倚肆2026/2/15

Kafka 生产者与消费者配置详解 一、DefaultKafkaProducerFactory 生产者配置详解 配置项示例值作用说明调优建议ProducerConfig.BOOTSTRAP_SERVERS_CONFIG"localhost:9092"Kafka 集群地址列表,生产者通过此地址发现集群。配置多个地址(用逗号分隔)以提高可用性。ProducerConfig.KEY_SERIALIZER_CLASS_CONFIGStringSerializer.class消息键的序列化器。键用于分区


Spring IOC&DI(上)
阿武不想上早八2026/2/6

Spring IOC&DI(上) 1. Spring IOC&DI Spring 是包含了众多工具方法的 IOC 容器 1.1 容器 概念:容器时用来容纳物品的装置。 例子:List/Map -> 数据存储容器;Tomcat -> Web 容器 1.2 IOC 概念:全称:Inversion of Control(控制反转),是 Spring 的核心思想,把对象交给 Spring 管理,就是 IOC 思想。 总的来说,Spring 就是一个”控制反转“的容器。 2. I

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客