使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)

1 引言

1.1 研究背景与意义

如今,心血管疾病(CVD) 是全球第一大死因,估计每年夺走 1790 万人的生命,占全球所有死亡人数的 31%。五分之四的心血管疾病死亡是由心脏病发作和中风引起的其中三分之一的死亡过早发生在 70 岁以下的人群中。心力衰竭是由 CVD引起的常见事件。 本文通过收集调查 28-77
岁的人群中可能有关患心脏病的特征属性来进行数据分析。通过分析,我们认为静息血压,静息心电图结果和是否患心脏病关系不大。而年龄,性别,胸痛类型,最大心率,血清胆固醇,运动诱发的心绞痛,运动ST 段的坡度,ST 在抑郁症中测量的数值这些指标比较会影响是否会患心脏病。

2、描述性统计

2.1数据概况分析

使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第1张图片
上表可知,各字段数量为 918 条,均未出现缺失值。我们发现 RestingBP,Cholesterol,FastingBS 这三个字段的最小值为0,经过分析,RestingBP,Cholesterol这两个字段为0 不符合现实情况,属于异常值。由于样本数据过少,我们不把含有异常值的那一条数据全部删除。在后面讨论该字段时,不把异常值纳入分析范围内。

2.2 数据展示使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第2张图片

3 数据可视化

3.1 相关系数热力图

由图 1可知,胸痛类型,最大心率,血清胆固醇,运动诱发的心绞痛,运动 ST 段的坡度,ST 在抑郁症中测量的数值,这 5 个指标对是否患心脏病的相关性较强。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第3张图片

3.2 患心脏病的年龄分布

从图 2可以看出,患病心脏病的年龄集中在 50-65 岁这个年龄段
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第4张图片

3.3 各个年龄段与患心脏病的关系

这里将 28 岁-77 岁年龄段平均分为了5 个区间,由上图可知,年龄段越高患心脏病人数比例越高。由于 68 岁 -77 岁区间调查统计人数较少,故患心脏病人数比例有一定的误差,但从整体的趋势来看年龄段越高,患心脏病可能性越大。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第5张图片

3.4 是否患病与静息血压、血清胆固醇的关系

这里分别绘制出了静息血压、血清胆固醇大小与是否患病之间的关系的示意图,可以看出患心脏病者的静息血压、血清胆固醇含量均高于不患病者,但差别不大。我们先分别对这两对双样本进行方差齐次性检验,P 值均远小于 0.05,说明样本不满足方差齐次性。接着对双样本进行T检验,P 值同样也小于 0.05,证明原假设不成立,即两个总体之间的均值存在显著差异。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第6张图片

3.5 性别和血清胆固醇含量对心脏病人数的影响

由图6可知,在血清胆固醇含量高于 200 (mg/dl) 时,男女性患病人数都成增长趋势。由图 7可知,男女生调查人数为 3:1,由于女生调查人数较少,在血清胆固醇含量高于 420 (mg/dl) 时,女性患病无数据支撑。因此在血清胆固醇含量处于 200 (mg/dl)420 (mg/dl) 时,随着血清胆固醇含量的增加,男性患心脏病的增长速度远高于女性患心脏病的增长速度,即男性比女性更容易患心脏病。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第7张图片

3.6 最大心率与患心脏病的关系

由图 8可知,不论男女,患心脏病的最大心率比不患心脏病的最大心率低。随着年龄的增加,患心脏病与不患心脏病的人群的最大心率都越来越低。但由于女性调查的数据较少,所以我们可以认为患心脏病的拟合曲线位于不患心脏病的曲线上面,即患心脏病的最大心率比不患心脏病的最大心率低。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第8张图片

3.7 胸痛类型与心脏病之间的关系

由图 9可知,胸痛类型没有任何症状的人得心脏病的人数最多,其次是非心绞痛非典型心绞痛,典型心绞痛。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第9张图片

3.8 运动诱发心绞痛与心脏病的关系

由图 10可知,在运动过程中有过心绞痛的人极大可能会患有心脏病,在运动过程中没有过心绞痛的人患心脏病的可能性较小。因此,在运动过程中是否有过心绞痛这个指标在对于是否会患心脏病有很大的参考价值。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第10张图片

3.9 运动 ST 段坡度指标对心脏病的影响

由图 11可知,在运动段的坡度为平坦、向下倾斜时,患心脏病数量更大,不患心脏病数量较少。在运动段的坡度为向上倾斜的时候,不患病人数较大,患病人数较少。因此运动 ST 段这个指标对是否患心脏病有一定的关系。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第11张图片

3.10 静息心电图与心脏病的关系图

由图 12可知,当静息心电图为正常、LVH的时候,对是否患心脏病没有参考价值其有无患心脏病者人数相当。所以仅看静息心电图结果为 ST 是没有什么意义的。可以说静息心电图的结果对有无患心脏病没有什么关系。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第12张图片

3.11 Oldpeak 指对心脏病的影响

由图 13可知,患心脏病的人群中,ST 在抑郁症中的测量值的均值高于不患心脏病人群中抑郁症的测量值。即 ST 在抑郁症中的测量值越高,越容易患有心脏病。
使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)_第13张图片

4 预防心脏病的建议

结合上述的分析,我们认为静息血压,静息心电图结果和是否患心脏病关系不大。而年龄,性别,胸痛类型,最大心率,血清胆固醇,运动诱发的心绞痛,运动 ST 段的坡度,ST 在抑郁症中测量的数值这些指标比较会影响是否会患心脏病。因此,我们的建议如下:
(1) 定期去医院检查是预防心脏病的重要举措
(2) 根据自己的身体状况,适量运动。
(3)保持良好心情,选择正确的方式进行解压
(4) 注意饮食,多吃蔬菜、水果、豆类和全谷物。
(5) 年纪越大,越要注意自己的身体。

5 附录(可视化代码+数据)

【项目源码下载】使用Python对心脏病影响因素数据可视化分析(seaborn+matplotlib)

你可能感兴趣的:(信息可视化,python,数据分析,数据挖掘)