Python程序开发竞赛 - 模拟题(第一套)
第三部分:数据分析与可视化(30分)
任务一:各科室门诊量月度趋势分析(15分)
技术架构:Django + PyEcharts
【任务说明】
现有某三甲医院2018-2023年共6年的门诊就诊数据(`hospital_outpatient.csv`),请根据任务要求完成数据分析与可视化。
【数据集说明】
数据集文件:`hospital_outpatient.csv`
| 字段名 | 说明 | 示例 |
|---|---|---|
| visit_id | 就诊记录唯一标识 | V20180001 |
| visit_date | 就诊日期 | 2018/01/15 |
| department | 就诊科室 | 内科 |
| patient_age | 患者年龄 | 45 |
| patient_gender | 患者性别 | 男/女 |
| doctor_name | 主治医生姓名 | 张医生 |
| diagnosis | 诊断结果 | 上呼吸道感染 |
| cost | 门诊费用(元) | 256.80 |
【任务要求】
1.数据读取与清洗(5分)
- 读取数据集 `hospital_outpatient.csv`,对数据进行必要的清洗;
- 处理缺失值:删除关键字段为空的记录;
- 处理重复值:删除 `visit_id` 重复的记录;
- 处理异常值:删除 `cost` 为空或负数的记录;
- 处理格式不一致:统一 `visit_date` 日期格式(如 `2018/01/15` 和 `2018-1-15` 统一转为 `datetime` 类型);
- 修正科室名称别名(如”内科室”统一为”内科”)。
2.数据统计与分析(5分)
- 按年份和月份统计内科、外科、儿科、妇产科、急诊科5个科室的月度门诊量;
- 生成”年-月”格式的时间序列索引。
3.可视化与展示(5分)
- 使用 PyEcharts 库绘制堆叠面积图(Stacked Area Chart),展示各科室门诊量的月度变化趋势;
- X轴为”年-月”格式的时间序列;
- 5个科室分别使用不同颜色区分;
- 设置图表标题、图例、DataZoom缩放组件,支持数据缩放浏览;
- 使用 Django 框架在前端页面中渲染展示该图表。
【操作说明】
- 从指定目录获取相关项目工程代码。
- 完成任务后,根据平台”答题区”对应内容要求,完成答题报告并点击”保存”按钮实时保存。
【评分标准】
| 评分项 | 分值 | 说明 |
|---|---|---|
| 数据清洗 | 5分 | 正确处理缺失值、重复值、异常值、格式不一致等问题 |
| 数据统计 | 5分 | 正确按年月和科室分组统计门诊量 |
| 可视化展示 | 5分 | 正确使用PyEcharts绘制堆叠面积图并通过Django渲染 |
任务二:患者年龄与住院费用分布分析(15分)
技术架构:Seaborn 独立脚本
【任务说明】
现有某医院2022-2023年的住院患者数据(`hospital_inpatient.csv`),请根据任务要求完成数据分析与可视化。
【数据集说明】
数据集文件:`hospital_inpatient.csv`
| 字段名 | 说明 | 示例 |
|---|---|---|
| patient_id | 患者唯一标识 | P20220001 |
| admission_date | 入院日期 | 2022/03/10 |
| discharge_date | 出院日期 | 2022/03/18 |
| department | 住院科室 | 外科 |
| patient_age | 患者年龄 | 52 |
| patient_gender | 患者性别 | 男/女 |
| stay_days | 住院天数 | 8 |
| total_cost | 住院总费用(元) | 15800.00 |
| surgery | 是否手术 | 是/否 |
| diagnosis | 诊断结果 | 阑尾炎 |
【任务要求】
1.数据读取与清洗(5分)
- 读取数据集 `hospital_inpatient.csv`,对数据进行必要的清洗;
- 处理 `patient_age` 异常值:将年龄为0或大于150的记录设为NaN后删除;
- 处理 `total_cost` 缺失值和极端值:删除费用缺失或大于500000的记录;
- 删除 `discharge_date` 早于 `admission_date` 的异常记录。
2.数据分析(5分)
- 按科室和性别分组,分析患者年龄分布与住院费用的关系;
- 计算各科室、各性别的费用统计指标(均值、中位数、标准差等)。
3.可视化与输出(5分)
- 使用 Seaborn 库绘制箱线图(Boxplot),展示不同科室住院费用的分布情况;
- 使用 `hue` 参数按性别分组显示;
- 设置图表标题、坐标轴标签;
- 使用 `sns.set_theme()` 设置图表样式;
- 将图表保存为 PNG 图片文件(分辨率 dpi=150,图像尺寸 figsize=(12,6))。
【操作说明】
- 从指定目录获取相关项目工程代码。
- 完成任务后,根据平台”答题区”对应内容要求,完成答题报告并点击”保存”按钮实时保存。
【评分标准】
| 评分项 | 分值 | 说明 |
|---|---|---|
| 数据清洗 | 5分 | 正确处理年龄异常值、费用极端值、日期逻辑错误等问题 |
| 数据分析 | 5分 | 正确按科室和性别分组分析费用分布 |
| 可视化输出 | 5分 | 正确使用Seaborn绘制箱线图并保存为PNG文件 |
【注意事项】
- 所有代码注释使用中文。
- 代码风格清晰,缩进规范,符合 PEP 8 编码规范。
- CSV数据文件路径建议使用 `os.path` 模块动态构建,确保代码的可移植性。
- 任务一为 Django Web 项目,需确保项目结构完整,能正常运行。
- 任务二为独立 Python 脚本,直接运行即可生成结果。
- 比赛时间:90分钟。
- 总分:30分。