当前位置: 首页 > news >正文

医学数据分析实战:冠心病发病因素可视化

一、数据加载与基本信息检查

#例9.5
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings#引入第三方库plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
warnings.filterwarnings('ignore')    #防止弹出
df=pd.read_csv(r'D:**冠心病.csv')    #读取文件
print(df.shape)
df.head(10)
df.describe().T# 统计学分析
# df.info()# 检查有多少缺失的数据
df.isnull().sum()
sns.distplot(df['age'])
plt.show()
sns.distplot(df['sex'])    #绘制性别分布情况的频数分布表
plt.show()
sns.boxplot(x=df["TenYearCHD"],y=df["BMI"])    #绘制BMI与冠心病发病情况分布的箱图
plt.show()

1. 数据加载与基本信息检查

df = pd.read_csv(r'**冠心病.csv')
print(df.shape)       # 输出数据维度(行数, 列数)
df.head(10)           # 显示前10行数据
df.describe().T       # 输出统计描述(均值、标准差、分位数等,转置后更易读)
# df.info()           # 检查数据类型和缺失值(被注释)
df.isnull().sum()     # 统计每列的缺失值数量
  • describe().T 转置后,统计量(如均值、最大值)按列显示,更清晰。
  • isnull().sum() 直接输出缺失值数量,帮助判断是否需要数据清洗。

2. 数据可视化分析

(1) 年龄分布直方图
sns.distplot(df['age'])
plt.show()
  • 功能:绘制年龄的分布曲线(直方图 + 核密度估计)。
  • 用途:检查年龄是否服从正态分布或存在异常值(如年龄为负数)。
(2) 性别分布直方图
sns.distplot(df['sex'])
plt.show()
  • 问题:性别通常是分类变量(0/1),使用 distplot 不直观。
  • 建议:改用计数图(sns.countplot)更合适:
sns.countplot(x='sex', data=df)
plt.title('性别分布(0=女,1=男)')
plt.show()
(3) BMI与冠心病发病情况的箱线图
sns.boxplot(x=df["TenYearCHD"], y=df["BMI"])
plt.show()
  • 功能:比较冠心病患者(TenYearCHD=1)与非患者(TenYearCHD=0)的BMI分布差异。
  • 解读
    • 箱线图显示中位数、四分位数和异常值。
    • 若两组箱体位置明显不同,说明BMI可能与冠心病相关。

3. 代码优化建议

(1) 缺失值处理
  • 如果 isnull().sum() 显示有缺失值,需补充处理逻辑,例如
df.fillna(df.median(), inplace=True)  # 用中位数填充数值型缺失值
(2) 更直观的性别分布图
  • 使用 countplot 替代 distplot
sns.countplot(x='sex', data=df, palette='Set2')
plt.title('性别分布(0=女,1=男)')
plt.show()
(3) 添加图表标签和标题
  • 所有图表应补充标题和轴标签,例如:
sns.boxplot(x="TenYearCHD", y="BMI", data=df)
plt.xlabel('是否患冠心病(0=否,1=是)')
plt.ylabel('BMI指数')
plt.title('冠心病患者的BMI分布对比')
plt.show()
(4) 多变量联合分析
  • 探索更多特征与冠心病的关系,例如年龄与发病率的趋势:
sns.boxplot(x="TenYearCHD", y="age", data=df)
plt.xlabel('是否患冠心病')
plt.ylabel('年龄')
plt.show()

4. 关键输出说明

  1. df.describe().T

    • 输出每列数据的统计量,如:
      • age 的均值、最大值(判断是否存在不合理年龄)。
      • BMI 的标准差(判断数据离散程度)。
  2. df.isnull().sum()

    • 输出示例:
age             0
sex             2
BMI             5
TenYearCHD      0
    • 显示 sex 和 BMI
    http://www.dtcms.com/a/258672.html

    相关文章:

  1. RGB相机 vs 灰度相机
  2. Ubuntu离线安装特定版本的gcc
  3. 暴雨来袭,气象卫星能在极端天气预报中起什么作用?
  4. 蓝桥杯嵌入式学习(cubemxkeil5)
  5. 记一次 Kafka 磁盘被写满的排查经历
  6. HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
  7. 图的拓扑排序管理 Go 服务启动时的组件初始化顺序
  8. Flink内存配置
  9. GPU常见规格及算力
  10. Langchain实战指南:从入门到精通AI链式编程!
  11. 使用 ttrpc 实现高效的进程间通信(附 Go Demo)
  12. 从零到一训练一个 0.6B 的 MoE 大语言模型
  13. 6月24日星期二今日早报简报微语报早读微语早读
  14. 代码随想录|图论|02深度优先搜索理论基础
  15. JVM(11)——详解CMS垃圾回收器
  16. Excel学习04
  17. IAR平台全面升级,提升瑞萨MCU架构的嵌入式软件开发效率
  18. 从零开始学习 Go 语言:快速入门指南(完整版)
  19. 左神算法之数字字符串解码方案计数算法
  20. 开篇-认识Gin——Go语言Web框架的性能王者
  21. Redis 哨兵模式学习笔记
  22. 华为云Flexus+DeepSeek征文 | DeepSeek-V3/R1 商用服务华为云开通指南及使用体验全解析
  23. python果蔬种植销售一体化服务系统
  24. 对于高考边界的理解以及未来就业层级的学习与思考
  25. leetcode114-二叉树展开为链表
  26. `docker run -it --rm` 笔记250624
  27. 论文笔记(八十六)V-HOP: Visuo-Haptic 6D Object Pose Tracking
  28. vue 3 计算器
  29. MySql:DDL,增删改查:创建表
  30. 【大模型学习】项目练习:套壳DeepSeek