当前位置: 首页 > 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.lryc.cn/news/574507.html

    相关文章:

  1. vue3+echarts实现tab切换多个图表
  2. 微信小程序节点相关总结
  3. 服务器常见问题以及解决方案
  4. 学习threejs,使用kokomi、gsap实现图片环效果
  5. 【AI落地应用实战】Chaterm:重新定义终端操作的AI智能工具
  6. mapbox基础,导出地图
  7. 打表法从原理到实战详解
  8. RabbitMQ + JMeter 深度集成指南:中间件性能优化全流程解析!
  9. uniapp/Vue/微信小程序瀑布流,小红书瀑布流,豆瓣瀑布流,淘宝瀑布流布局
  10. 微信小程序如何实现通过邮箱验证修改密码功能
  11. ORACLE表空间扩容
  12. jmeter接口测试
  13. Github 2025-06-24Python开源项目日报 Top10
  14. PyTorch topk() 用法详解:取最大值
  15. Gym安装
  16. 数据结构day2
  17. 数组题解——​合并区间【LeetCode】
  18. 使用 PyAEDT 设计参数化对数周期偶极子天线 LPDA
  19. 如何解决TCP传输的“粘包“问题
  20. HTTP面试题——缓存技术
  21. Qt面试题汇总
  22. 记录一下小程序城市索引栏开发经历
  23. ✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub
  24. Rocky8使用gvm配置Go多版本管理的微服务开发环境
  25. uni-app项目实战笔记24--uniapp实现图片保存到手机相册
  26. spring01-简介
  27. 618风控战升级,瑞数信息“动态安全+AI”利剑出鞘
  28. window显示驱动开发—DirectX 图形基础结构 DDI
  29. 【CS创世SD NAND征文】基于全志V3S与CS创世SD NAND的物联网智能路灯网关数据存储方案
  30. taro小程序,tailwindcss的bg-x-x,背景颜色不生效,只有自定义的写法颜色才生效