目錄
- 數據分析案例:醫療健康數據分析
- 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