Module 1: 心血管疾病数据可视化看板
概述
这是一个基于Streamlit的交互式数据可视化应用程序,用于分析和可视化心血管疾病数据。
功能特性
- 数据加载与清洗
- 特征工程(年龄转换、BMI计算)
- 异常值处理(血压数据)
- 交互式数据筛选
- 多种可视化图表
- 数据导出功能
文件结构
module1_dashboard/
├── cardio_dashboard.py # 主应用程序文件
└── README.md # 本说明文件
运行要求
1. 环境配置
确保已创建并激活conda虚拟环境:
conda create -n cardioenv python=3.10
conda activate cardioenv
2. 安装依赖
cd aicodes
pip install -r requirements.txt
3. 准备数据文件
将 心血管疾病.xlsx 文件放置在以下路径:
F:\Project\PythonProject\zion_agent\data\心血管疾病.xlsx
如果数据文件不存在,应用程序将使用示例数据进行演示。
运行应用程序
方式1: 使用Streamlit命令行
cd aicodes/module1_dashboard
streamlit run cardio_dashboard.py
方式2: 使用指定的Python解释器
"C:\Users\Yeraphael\.conda\envs\cardioenv\python.exe" -m streamlit run cardio_dashboard.py
应用程序界面
侧边栏筛选器
- 年龄范围滑块: 筛选指定年龄范围的记录
- 性别多选框: 筛选指定性别的记录(1=男性,2=女性)
- 心血管疾病状态: 筛选疾病状态(0=无疾病,1=有疾病)
主页展示
- 总记录数: 筛选后的数据记录总数
- 心血管疾病风险率: 心血管疾病患者的比例
- 平均年龄: 筛选后数据的平均年龄
可视化图表
- 年龄分布直方图: 按心血管疾病状态区分的年龄分布
- BMI类别堆叠柱状图: BMI类别对心血管疾病的影响
- 血压与年龄关系图: 收缩压和舒张压与年龄的关系
数据导出
可以从侧边栏下载筛选后的数据为CSV文件。
数据处理流程
1. 数据加载
- 从Excel文件加载数据
- 检查文件是否存在
- 显示原始数据信息
2. 特征工程
- 将age(天)转换为age_years(年)
- 计算BMI: weight / (height/100)^2
- 创建BMI类别: 偏瘦、正常、超重、肥胖
3. 数据清洗
- 删除舒张压≥收缩压的记录
- 删除血压极端异常值:
- 收缩压: 90-250 mmHg
- 舒张压: 60-150 mmHg
4. 类别转换
- 胆固醇水平: 1=正常, 2=高于正常, 3=显著高于正常
- 血糖水平: 1=正常, 2=高于正常, 3=显著高于正常
故障排除
常见问题
- 数据文件未找到: 应用程序将使用示例数据进行演示
- 缺少必需列: 应用程序会跳过相关处理步骤并显示警告
- 依赖包缺失: 确保已安装requirements.txt中的所有包
日志查看
Streamlit应用程序运行时会在终端显示日志信息,包括:
- 数据加载状态
- 数据处理步骤
- 错误和警告信息
开发说明
文件路径已硬编码为:F:\Project\PythonProject\zion_agent\data\心血管疾病.xlsx
- 如需更改数据路径,请修改
cardio_dashboard.py中的DATA_PATH常量 - 所有数据处理函数都使用了
@st.cache_data装饰器以提高性能