人工智能训练师(三级)实操考试 — 2.1.4 医疗研究数据清洗和标注设计

← 返回题目列表 考核时间:20 分钟 20:00
工作任务

随着医学技术的进步和医疗资源的丰富,医疗研究在改善患者治疗效果、提升医疗服务质量方面起到了重要作用。研究人员通过分析大量患者的治疗数据,能够评估不同治疗方案的效果,发现潜在的健康问题,并提出针对性的治疗建议。

现提供一份医疗研究数据集,训练集样本数据一共5441条记录。请补全2.1.4.ipynb代码,完成下面的数据预处理任务:

具体要求

(1)加载数据集,查看表的数据类型,表结构和显示每一列的空缺值数量;

(2)将"就诊日期"和"诊断日期"规范为"yyyy-mm-dd"格式,并将"病人ID"列名改为"患者ID",显示修改后的表结构;

(3)增加"诊断延迟"(诊断日期-就诊日期)和"病程"(当前日期-诊断日期)两列,删除不合理的数据(如负数,年龄为几百岁等);

(4)检查数据集中的重复值并删除所有重复值,并记录删除的行数;

(5)对数据段[年龄,体重,身高]进行归一化处理;

(6)统计不同疾病类型的治疗结果分布,并画出柱状图;

(7)分析年龄和疾病严重程度的关系,绘制出散点图;

(8)保存处理后的数据,命名为:2.1.4_cleaned_data.csv;

注意事项
  • 在代码的 橙色下划线 处填写正确的 Python 代码
  • 请勿修改源代码的其他部分
  • 填写完成后点击 "检查答案" 查看评分
  • 点击 "显示答案" 可直接查看所有参考答案
  • 点击 "重置" 清空所有填写内容
请在下划线处填写代码
当前得分
0 / 19
In [1] — 加载数据集 & 查看数据类型和表结构 2分
import pandas as pd # 加载数据集并指定编码为gbk 1分 data = # 查看数据类型 print(data.dtypes) # 查看表结构基本信息 1分 print() # 显示每一列的空缺值数量 print(data.isnull().sum())
In [2] — 规范日期格式 & 修改列名 2分
# 规范日期格式 data['就诊日期'] = pd.to_datetime(data['就诊日期']) data['诊断日期'] = pd.to_datetime(data['诊断日期']) # 修改列名 "病人ID" -> "患者ID" 2分 (, inplace=True) # 查看修改后的表结构 print(data.head())
In [3] — 增加诊断延迟和病程列 1分
from datetime import datetime # 增加诊断延迟列 1分 data['诊断延迟'] = .dt.days # 增加病程列 data['病程'] = (datetime(2024, 9, 1) - data['诊断日期']).dt.days
In [4] — 删除不合理数据 4分
# 删除不合理的数据(负数、年龄异常等)4分 data = [( >= 0) & ( > 0) & ( < 120)] # 查看修改后的数据 print(data.describe())
In [5] — 删除重复值 1分
# 删除重复值并记录删除的行数 initial_rows = data.shape[0] (inplace=True) deleted_rows = initial_rows - data.shape[0] print(f'删除的重复行数: {deleted_rows}')
In [6] — 归一化处理 2分
from sklearn.preprocessing import MinMaxScaler # 对需要归一化的列进行处理 scaler = MinMaxScaler() # 指定归一化的列 1分 columns_to_normalize = [] # 执行归一化 1分 data[columns_to_normalize] = # 查看归一化后的数据 print(data.head())
In [7] — 疾病类型治疗结果分布柱状图 2分
import matplotlib.pyplot as plt import matplotlib.font_manager as fm # 统计治疗结果分布 treatment_outcome_distribution = data.groupby('疾病类型')['治疗结果'].value_counts().unstack() # 设置中文字体 font_path = 'C:/Windows/Fonts/simhei.ttf' my_font = fm.FontProperties(fname=font_path) # 绘制柱状图 2分 (, stacked=True) plt.title('不同疾病类型的治疗结果分布', fontproperties=my_font) plt.xlabel('疾病类型', fontproperties=my_font) plt.ylabel('治疗结果数量', fontproperties=my_font) plt.xticks(fontproperties=my_font) plt.yticks(fontproperties=my_font) plt.legend(prop=my_font) plt.show()
In [8] — 年龄与疾病严重程度散点图 3分
# 绘制散点图 3分 (, ) plt.title('年龄和疾病严重程度的关系', fontproperties=my_font) plt.xlabel('年龄', fontproperties=my_font) plt.ylabel('疾病严重程度', fontproperties=my_font) plt.xticks(fontproperties=my_font) plt.yticks(fontproperties=my_font) plt.legend(prop=my_font) plt.show()
In [9] — 保存处理后的数据 2分
# 保存处理后的数据 2分 output_path = '2.1.4_cleaned_data.csv' (, index=False)
答案检查结果