目录
- 数据分析案例:医疗健康数据分析
- 1. 项目背景
- 2. 数据加载与预处理
- 2.1 加载数据
- 2.2 数据清洗
- 3. 探索性数据分析(EDA)
- 3.1 再入院率概览
- 3.2 按年龄分组的再入院率
- 3.3 住院时长与再入院
- 4. 特征工程与可视化
- 5. 模型构建与评估
- 5.1 数据划分
- 5.2 训练逻辑回归
- 5.3 模型评估
- 6. 业务应用
- 7. 完整代码
- 8. 总结
数据分析案例:医疗健康数据分析
1. 项目背景
随着人口老龄化及慢性病患病率的上升,医院对患者再入院(readmission)的管理和预防成为医疗质量和成本控制的关键。再入院不仅增加了医院的负担,也意味着患者未获得充分的随访和康复指导。本案例以某综合医院的患者入院出院数据为例,通过 Pandas 对医疗健康数据进行清洗、探索性分析与建模,构建预测再入院风险的模型,为医院制定个性化干预方案提供数据支持。
2. 数据加载与预处理
2.1 加载数据
假设已将医院电子健康记录导出为 hospital_data.csv
,主要字段包括:
patient_id
:患者唯一标识age
:年龄(整数)gender
:性别(‘Male’/‘Female’)admission_date
、discharge_date
:入院与出院日期num_prev_adm
:前次入院次数length_of_stay
:住院天数num_medications
:住院期间用药种类数lab_result
:关键实验室指标(连续值)readmitted
:是否在30天内再入院(0/1)
import pandas as pd# 读取数据并解析日期
df = pd.read_csv('hospital_data.csv', parse_dates=['admission_date', 'discharge_date'])
print("数据概览:")
print(df.head())
2.2 数据清洗
- 检查缺失值与异常
- 计算住院时长
- 编码类别变量
# 缺失值统计
print(df.isnull().sum())# 删除缺失关键字段的记录
df = df.dropna(subset=['age','gender','admission_date','discharge_date','readmitted'])# 计算住院时长(days)
df['length_of_stay'] = (df['discharge_date'] - df['admission_date']).dt.days.clip(lower=1)# 性别编码
df['gender'] = df['gender'].map({'Male':0,'Female':1})print("清洗后数据预览:")
print(df[['patient_id','age','gender','length_of_stay','readmitted']].head())
3. 探索性数据分析(EDA)
3.1 再入院率概览
import matplotlib.pyplot as pltreadmit_rate = df['readmitted'].mean()
print(f"总体再入院率:{readmit_rate:.2%}")
3.2 按年龄分组的再入院率
age_bins