You need to enable JavaScript to run this app. 搭建Pandas DataFrame统计听神经瘤体积并计算肿瘤倍增时间方案咨询
优惠活动
大模型
产品
解决方案
定价
更多

搭建Pandas DataFrame统计听神经瘤体积并计算肿瘤倍增时间方案咨询

听神经瘤Gamma Knife治疗随访体积数据分析落地方案

一、数据录入优化方案(替代FileMaker Pro,无额外license需求)

  • 优先用医院内网Office 365自带的Microsoft Lists建录入表单,不需要额外站点license,设置四个字段即可:患者ID(文本)、扫描日期(日期型)、肿瘤体积(mm³)(数字型)、是否为治疗后扫描(是/否选项),给所有录入人员开编辑权限,自动避免格式填错,数据直接就能导出为CSV,完全不会出现多人编辑冲突的问题。
  • 无Office 365的话用共享文件夹存Excel,按长表结构设计,每一行对应单次扫描记录,不要用一行存患者所有扫描数据的宽表结构,录入更简便,后续数据处理不需要额外转格式。
  • 导出数据时直接存为UTF-8编码的CSV即可,无需额外格式调整。

二、Pandas数据处理实现(复制可用,无需复杂代码基础)

先安装Anaconda,自带Pandas、Numpy等所需工具,无需额外配置环境,以下代码直接复制修改文件路径就能运行:

import pandas as pd
import numpy as np

# 导入数据,自动识别扫描日期为时间格式
df = pd.read_csv("你的CSV文件路径.csv", parse_dates=["扫描日期"])
# 按患者ID、扫描日期排序,保证时间顺序正确
df = df.sort_values(by=["患者ID", "扫描日期"]).reset_index(drop=True)

# 拆分治疗前、治疗后数据集
pre_treatment_df = df[df["是否为治疗后扫描"] == "否"].copy()
post_treatment_df = df[df["是否为治疗后扫描"] == "是"].copy()

三、体积倍增时间自动计算

采用临床通用的体积倍增时间公式:VDT = (t2 - t1) * log(2) / log(V2/V1),其中t1、t2为两次扫描的时间,V1、V2为对应时间点的肿瘤体积,仅计算体积增长的区间,代码如下:

def calculate_vdt(patient_group):
    # 对单个患者的所有扫描记录按日期排序
    patient_group = patient_group.sort_values("扫描日期")
    result = []
    # 遍历所有相邻两次扫描记录
    for i in range(1, len(patient_group)):
        t1 = patient_group.iloc[i-1]["扫描日期"]
        t2 = patient_group.iloc[i]["扫描日期"]
        v1 = patient_group.iloc[i-1]["肿瘤体积(mm³)"]
        v2 = patient_group.iloc[i]["肿瘤体积(mm³)"]
        # 仅统计体积增长的区间
        if v2 > v1:
            # 计算时间差,转换为年为单位
            days_gap = (t2 - t1).days
            years_gap = days_gap / 365.25
            # 计算倍增时间保留两位小数
            vdt = round(years_gap * np.log(2) / np.log(v2 / v1), 2)
            result.append({
                "患者ID": patient_group.name,
                "首次扫描日期": t1,
                "二次扫描日期": t2,
                "首次体积(mm³)": v1,
                "二次体积(mm³)": v2,
                "倍增时间(年)": vdt
            })
    return pd.DataFrame(result)

# 分别计算治疗前、治疗后的倍增时间
pre_treatment_vdt = pre_treatment_df.groupby("患者ID", group_keys=False).apply(calculate_vdt)
post_treatment_vdt = post_treatment_df.groupby("患者ID", group_keys=False).apply(calculate_vdt)

# 结果导出为Excel,直接用于研究分析
with pd.ExcelWriter("听神经瘤倍增时间分析结果.xlsx") as writer:
    pre_treatment_vdt.to_excel(writer, sheet_name="治疗前倍增时间", index=False)
    post_treatment_vdt.to_excel(writer, sheet_name="治疗后倍增时间", index=False)
  • 若单个患者存在多个体积增长区间,代码会自动生成每一段的倍增时间,可按需取平均值、治疗前最后一段或治疗后第一段的数值做后续统计。

内容的提问来源于stack exchange,提问作者capnahab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 16:24:00