You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas匹配DataFrame数据、统计疾病频次及解决代码报错

数据集关联、疾病统计及代码错误修复

一、患者与疾病数据集关联及Top5疾病统计

步骤1:关联两个数据集

用pandas的merge方法,通过ICD编码将患者数据集与疾病数据集关联,匹配对应疾病名称。假设患者数据集名为patients,疾病数据集名为diseases,患者表ICD编码列是icd_code,疾病表ICD编码列是icd_code、疾病名称列是disease_name,代码如下:

import pandas as pd
# 关联数据集
joined = pd.merge(patients, diseases, on='icd_code')

注意:请替换为你实际数据表的列名

步骤2:分组统计疾病出现次数并取Top5

按ICD编码+疾病名称分组统计出现次数,再按次数降序排序取前5:

# 分组统计疾病出现次数
disease_counts = joined.groupby(['icd_code', 'disease_name']).size().reset_index(name='occurrence_count')
# 降序排序取Top5
top5_diseases = disease_counts.sort_values(by='occurrence_count', ascending=False).head(5)
# 输出结果
print(top5_diseases)

二、代码错误分析与修复

错误原因

你执行的代码:

avg2 = joined.groupby('disease_name').TIME_DELTA.mean().disease_name.value_counts()

joined.groupby('disease_name').TIME_DELTA.mean()返回的是一个Series对象——它的索引是disease_name,值是对应疾病的TIME_DELTA均值。这个Series没有disease_name属性,所以调用.disease_name.value_counts()会触发'Series' object has no attribute 'disease_name'错误。

修复方案

根据不同需求,有两种处理方式:

情况1:统计各疾病TIME_DELTA均值的分布(即不同均值对应的疾病数量)

先计算均值,再对均值结果做频次统计:

# 计算每个疾病的TIME_DELTA均值
mean_time_delta = joined.groupby('disease_name').TIME_DELTA.mean()
# 统计不同均值对应的疾病数量
avg2 = mean_time_delta.value_counts()

情况2:同时获取每个疾病的TIME_DELTA均值和出现次数(更常用的需求)

用agg方法一次性聚合多个统计指标:

# 分组聚合,计算均值和出现次数
disease_stats = joined.groupby('disease_name').agg(
    avg_time_delta=('TIME_DELTA', 'mean'),
    occurrence_count=('disease_name', 'size')
).sort_values(by='occurrence_count', ascending=False)
# 输出结果
print(disease_stats)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:46:08