当前位置: 首页 > 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

    相关文章:

  1. wordpress博客导航windows11优化大师
  2. 网站建设制作 南京公司关键词搜索量查询
  3. 深圳知名网站建设平台优秀网站设计网站
  4. 营销型网站建设xywlcn如何联系百度人工客服电话
  5. 网站建设服务商城湘潭seo快速排名
  6. 网站建设技术发展现状网站推广策划思路的内容
  7. RGB相机 vs 灰度相机
  8. Ubuntu离线安装特定版本的gcc
  9. 暴雨来袭,气象卫星能在极端天气预报中起什么作用?
  10. 蓝桥杯嵌入式学习(cubemxkeil5)
  11. 记一次 Kafka 磁盘被写满的排查经历
  12. HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
  13. 图的拓扑排序管理 Go 服务启动时的组件初始化顺序
  14. Flink内存配置
  15. GPU常见规格及算力
  16. Langchain实战指南:从入门到精通AI链式编程!
  17. 使用 ttrpc 实现高效的进程间通信(附 Go Demo)
  18. 从零到一训练一个 0.6B 的 MoE 大语言模型
  19. 6月24日星期二今日早报简报微语报早读微语早读
  20. 代码随想录|图论|02深度优先搜索理论基础
  21. JVM(11)——详解CMS垃圾回收器
  22. Excel学习04
  23. IAR平台全面升级,提升瑞萨MCU架构的嵌入式软件开发效率
  24. 从零开始学习 Go 语言:快速入门指南(完整版)
  25. 左神算法之数字字符串解码方案计数算法
  26. 开篇-认识Gin——Go语言Web框架的性能王者