目录
一、数据预处理
1.转换出Outcome这个字段
把class中的b'tested_positive'和b'tested_negative'转换为Outcome中的1和0
并且drop掉class这个字段
diabetes_data['OutCome'] = diabetes_data['class'].map(lambda s: 1 if s == "b'tested_positive'" else 0)
diabetes_data.drop(labels = ["class"], axis = 1, inplace = True)
Python之Lambda表达式和if not...else用法_全栈测试开发日记的博客-优快云博客
2.describe()
count 告诉我们特征中非空行的数量。
mean 告诉我们该特征的平均值。
std 告诉我们该特征的标准偏差值。
min 告诉我们该特征的最小值。
25%、50% 和 75% 是每个特征的百分位数/四分位数。 这个四分位信息有助于我们检测异常值。
max 告诉我们该特征的最大值。
print(diabetes_data.describe())
print(diabetes_data.describe().T)
3.查找缺失值
以下列或变量的零值无效:葡萄糖、血压、皮肤厚度、胰岛素、体重指数
把他们都改成NaN类型
diabetes_data_copy = diabetes_data.copy(deep = True)
diabetes_data_copy[['plas','pres','skin','insu','mass']] = diabetes_data_copy[['plas','pres','skin','insu','mass']].replace(0,np.NaN)
## showing the count of Nans
print(diabetes_data_copy.isnull().sum())
4.缺失值填补
mean_byOutcome('plas')
diabetes_data_copy.loc[(diabetes_data_copy['Outcome'] == 0) & (diabetes_data_copy['plas'].isnull()), 'plas'] = mean_byOutcome('plas')['plas'][0]
diabetes_data_copy.loc[(diabetes_data_copy['Outcome'] == 1) & (diabetes_data_copy['plas'].isnull()), 'plas'] = mean_byOutcome('plas')['plas'][1]
二、特征分析
1.热力图分析Outcome与其他数据的相关性
从图中可以看出患病率跟plas(口服葡萄糖耐量试验中 2 小时的血浆葡萄糖浓度)相关性很大
跟pres(舒张压 )和skin(三头肌皮褶厚度)的相关性较小
2.探究preg和患病率的关系
preg没有缺失值
可以看出当怀孕次数大于7次甚至更多时,患病的概率比较高。