Appearance
医疗研究数据清洗和标注设计
1.导入库
python
import pandas as pd- 导入
pandas库,⽤于数据处理和分析,通常别名为 pd
2.加载数据集
python
data = pd.read_csv('medical_data.csv', encoding='gbk')pd.read_csv(): 读取CSV文件- 'medical_data.csv' : 文件路径
encoding='gbk': 指定文件编码格式(处理中文)
3.数据探索
python
print(data.dtypes)
print(data.head())data.dtypes: 显示每一列的数据类型- head() : 显示前5行数据
- 功能:初步了解数据结构和内容
4.检查缺失值
python
print(data.isnull().sum())data.isnull().sum(): 统计每列的缺失值数量- 功能:识别数据完整性问题
5.日期格式处理
python
data['就诊日期'] = pd.to_datetime(data['就诊日期'])
data['诊断日期'] = pd.to_datetime(data['诊断日期'])pd.to_datetime(): 将列转换为datetime类型- 功能:标准化日期格式以便后续计算
6.列名修改
python
data.rename(columns={'病人ID':'患者ID'}, inplace=True)rename(): 修改列名- columns={'病人ID':'患者ID'} : 指定旧名和新名的映射
- inplace=True : 直接修改原DataFrame
功能:统一命名规范
7.新增计算列
python
from datetime import datetime
data['诊断延迟'] = (data['诊断日期'] - data['就诊日期']).dt.days
data['病程'] = (datetime(2024, 9, 1) - data['诊断日期']).dt.days- dt.days : 提取时间差的天数部分
- datetime(2024, 9, 1) : 设定参考日期
- 功能:计算诊断延迟天数和病程天数
8.数据清洗
python
data = data[(data['诊断延迟'] >= 0) & (data['年龄'] > 0) & (data['年龄'] < 120)]布尔索引过滤:
- 诊断延迟不小于0天
- 年龄在0-120岁之间
功能:删除不合理数据
9.数据统计
python
print(data.describe())describe(): 生成数值列的统计摘要- 功能:查看清洗后数据的统计特征
10.处理重复值
python
initial_rows = data.shape[0]
data.drop_duplicates(inplace=True)
deleted_rows = initial_rows - data.shape[0]
print(f'删除的重复行数: {deleted_rows}')shape[0]: 获取行数drop_duplicates(): 删除完全重复的行- inplace=True : 直接修改原DataFrame
功能:删除重复记录并统计数量
11.数据归一化
python
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
columns_to_normalize = ['年龄', '体重', '身高']
data[columns_to_normalize] = scaler.fit_transform(data[columns_to_normalize])MinMaxScaler(): 创建最小-最大缩放器- 归一化公式:(x - min)/(max - min)
fit_transform(): 计算并应用转换功能:将数值特征缩放到[0,1]范围
12.数据可视化准备
python
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
font_path = 'C:/Windows/Fonts/simhei.ttf'
my_font = fm.FontProperties(fname=font_path)设置中文字体显示
- simhei.ttf : 黑体字体文件路径
fontproperties=my_font : 指定中文字体
功能:确保图表正确显示中文
13.治疗结果分布分析
python
treatment_outcome_distribution = data.groupby('疾病类型')['治疗结果'].value_counts().unstack()
treatment_outcome_distribution.plot(kind='bar', stacked=True)groupby().value_counts().unstack(): 创建交叉频数表plot(kind='bar', stacked=True): 绘制堆叠柱状图- 功能:展示不同疾病类型的治疗结果分布
14.年龄与疾病严重程度分析
python
plt.scatter(data['年龄'], data['疾病严重程度'])scatter(): 绘制散点图- 功能:探索年龄与疾病严重程度的关系
15.图表美化
python
plt.title()/plt.xlabel()/plt.ylabel(): 设置标题和轴标签
plt.xticks()/plt.yticks(): 设置刻度标签
plt.legend(): 添加图例16.保存处理后的数据
python
output_path = '2.1.4_cleaned_data.csv'
data.to_csv(output_path, index=False)- to_csv() : 保存为CSV文件
- index=False : 不保存行索引
- 功能:导出清洗后的数据
制定数据清洗规范
txt
1. 数据加载:使用 pandas 库加载数据集,检查数据的基本结构和类型。
2. 检查数据集中的缺失值,使用删除包含缺失值的行的办法处理,记录缺失值处理后的数据行数;
3、增加“诊断延迟”(诊断日期-就诊日期)和“病程”(当前日期-诊断日期)两列,删除不合理的数据(如负数,年龄为几百岁等);
4、检查数据集中的重复值并删除所有重复值,并记录删除的行数;
5、对数据段[年龄,体重,身高]进行归一化处理;
6、保存清洗后的数据: 将经过清洗和处理后的数据保存为新的 CSV 文件,以便后续使用。制定数据标注规范
1. 数据来源:标注数据的来源,包括数据集的名称、获取日期和数据提供者。
2. 数据描述:提供详细的数据描述,包括每列数据的含义、单位和可能的取值范围。
3. 特征选择: 确定对目标变量预测最有用的特征。
4. 目标变量设定: 根据业务需求和数据特性,选择最有用的特征。
5. 数据划分: 将数据分为训练集和测试集,通常采用 80/20 的比例,以便于模型的训练和评估。
6. 保存处理后的数据:保存处理后的数据,并记录保存文件的路径和文件名。
7. 数据清洗和标注规范文档