code111

import pandas as pd
import numpy as np

# 读取数据集
data = pd.read_csv("patient_data.csv")

# 保存新的csv
data.to_csv('cleaned_sensor_data.csv', index=False)


# 数据集行数
data.shape[0]
len(data)

# 缺失值行数   data.isnull().sum()

# 创建新列'RiskLevel',根据住院天数判断风险等级 3分
data['RiskLevel'] = np.where(data['DaysInHospital'], '高风险患者', '低风险患者')


# 定义BMI区间和标签
bmi_bins = [0, 18.5, 24, 28, np.inf]
bmi_labels = ['偏瘦', '正常', '超重', '肥胖']
# 根据BMI值划分指定区间 4分
data['BMIRange'] = pd.cut(data['BMI'], bins=bmi_bins, labels=bmi_labels, right=False)  # 使用左闭右开区间

# 计算每个BMI区间中高风险患者的比例 2分
data.groupby('BMIRange')['RiskLevel'].apply(lambda x: (x == '高风险患者').mean())


# 统计每个BMI区间的患者数量, 类似group by每个组的数据
bmi_patient_count = data['BMIRange'].value_counts()

# 对传感器类型进行分组,并计算每个组的数据数量和平均值 3分
sensor_stats = data.groupby('SensorType')['Value'].agg(['count', 'mean'])




# 缺失值行数
print("缺失值行数:", data.isnull().sum())

# 查看重复行数
print("重复数据行数:", data.duplicated().sum())

# 删除重复行,保留第一条
cleaned_data = data.drop_duplicates(keep="first")
# 2. 数据合理性审核
data['is_age_valid'] = data['Age'].between(18, 70)              #Age数据的合理性审核 2分
data['is_income_valid'] = data['Income'] > 2000                 #Income数据的合理性审核 2分
data['is_loan_amount_valid'] = data['LoanAmount']  < (data['Income'] * 5)      #LoanAmount数据的合理性审核 2分
data['is_credit_score_valid'] = data['CreditScore'].between(300, 850)   #CreditScore数据的合理性审核 2分
# 合理性检查结果
validity_checks = data[['is_age_valid', 'is_income_valid', 'is_loan_amount_valid', 'is_credit_score_valid']].all(axis=1)
data['is_valid'] = validity_checks
# 输出结果
print("数据合理性检查:")
print(data[['is_age_valid', 'is_income_valid', 'is_loan_amount_valid', 'is_credit_score_valid', 'is_valid']].describe())

# Age数据类型转换为int
data['Age'] = data['Age'].astype(int)

# ReviewScore数据标准化 = (样本值 - 平均值) / 样本标准差 
data['ReviewScore'] = (data['ReviewScore'] - data['ReviewScore'].mean()) / data['ReviewScore'].std()

功能 代码
读取数据集 data = pd.read_csv("patient_data.csv")
写入数据集 data.to_csv('cleaned_sensor_data.csv', index=False)
数据集行数 data.shape[0] 、 len(data)
缺失值行数 data.isnull().sum()
缺失值行数 data.duplicated().sum()
删除缺损值 data = data.dropna()
按列删除缺损值 cleaned_data = data.drop(columns=['is_abnormal'])
类型转换 data['horsepower'] = pd.to_numeric(data['horsepower'], errors='coerce')
类型转换 data['Age'] = data['Age'].astype(int)
划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
posted @ 2026-06-12 18:21  亲爱的阿道君  阅读(12)  评论(0)    收藏  举报