变量类型
变量有许多类型,可分为连续变量、有序多分类(等级)变量)、无序多分类变量、二分类变量。
变量类型转换
有些类型的变量可以转换为其他类型的变量。
变量类型的转换 | 举例 |
无序多分类→n个二分类 | 疾病(无序多分类)有高血压、糖尿病、脑积水等。可将疾病分为是否高血压(二分类)、是否糖尿病(二分类)、是否脑积水(二分类)等 |
连续→等级 | 根据空腹血糖水平(连续)可以分级:偏低、正常、偏高(等级) |
等级→二分类 | 偏低、正常、偏高的空腹血糖水平(等级)可分为是否高血糖(二分类) |
无序多分类→n个二分类
"""疾病是无序多分类变量"""
df = pd.DataFrame({'门诊号': [1, 2, 3, 4, 5],
'疾病': ['高血压', '糖尿病', '脑积水', '糖尿病', '高血压']})
df
# 输出:
# 门诊号 疾病
# 0 1 高血压
# 1 2 糖尿病
# 2 3 脑积水
# 3 4 糖尿病
# 4 5 高血压
"""无序多分类→n个二分类"""
df = pd.concat([df,
pd.get_dummies(df['疾病'], prefix='疾病')],
axis=1)
df
# 输出:
# 门诊号 疾病 疾病_糖尿病 疾病_脑积水 疾病_高血压
# 0 1 高血压 False False True
# 1 2 糖尿病 True False False
# 2 3 脑积水 False True False
# 3 4 糖尿病 True False False
# 4 5 高血压 False False True
连续→等级→二分类
"""空腹血糖是连续变量"""
df = pd.DataFrame({'门诊号': [1, 2, 3, 4, 5],
'空腹血糖': [1.1, 4.5, 5.5, 7.5, 11.5]})
df
# 输出:
# 门诊号 空腹血糖
# 0 1 1.1
# 1 2 4.5
# 2 3 5.5
# 3 4 7.5
# 4 5 11.5
"""连续→等级"""
conditions = [df['空腹血糖'] < 3.9,
(df['空腹血糖'] >= 3.9) & (df['空腹血糖'] <= 6.1),
df['空腹血糖'] > 6.1]
labels = ['低血糖', '正常', '高血糖']
df['空腹血糖分级'] = np.select(conditions, labels)
df
# 输出:
# 门诊号 空腹血糖 空腹血糖分级
# 0 1 1.1 低血糖
# 1 2 4.5 正常
# 2 3 5.5 正常
# 3 4 7.5 高血糖
# 4 5 11.5 高血糖
"""等级→二分类"""
df['是否高血糖'] = df.apply(lambda x : '高血糖' if x['空腹血糖分级']=='高血糖' else '非高血糖',
axis=1)
df
# 输出:
# 门诊号 空腹血糖 空腹血糖分级 是否高血糖
# 0 1 1.1 低血糖 非高血糖
# 1 2 4.5 正常 非高血糖
# 2 3 5.5 正常 非高血糖
# 3 4 7.5 高血糖 高血糖
# 4 5 11.5 高血糖 高血糖