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

    相关文章:

  1. git学习资源
  2. 轨迹降噪API及算法
  3. 应用层协议 HTTP
  4. 洛谷P1092 [NOIP 2004 提高组] 虫食算
  5. openai-agents实现out_guardrails
  6. DataSophon 1.2.1集成Flink 1.20并增加JMX 监控
  7. [ruby on rails] ActiveJob中 discard_on,retry_on和 rescue_from的应用
  8. 用福昕阅读器打开pdf文件,整个程序窗口自动缩小的问题
  9. 14.OCR字符识别
  10. 10-Python模块详解
  11. 猿人学js逆向比赛第一届第十二题
  12. 国产化条码类库Spire.Barcode教程:如何使用 C# 读取 PDF 中的条码(两种方法轻松实现)
  13. 【前端】JS模块化解析-ESModule
  14. C# VB.NET取字符串中全角字符数量和半角字符数量
  15. 电机驱动基础
  16. Rust 项目实战:多线程 Web 服务器
  17. 第1篇:环境搭建与第一个Gin应用
  18. 数字图像处理——滤波器核(kernel)
  19. 构建你的 AI 模块宇宙:Spring AI MCP Server 深度定制指南
  20. macOS 26 Tahoe
  21. 2025年应用材料、机械与制造工程国际会议(ICAMMME 2025)
  22. Starrocks 低基数全局字典优化
  23. 桌面小屏幕实战课程:DesktopScreen 8 非易失性存储器NVS
  24. 市面上重要的AI开发工具和框架
  25. C++038(指针)
  26. ci | cd
  27. OpenHarmony如何获取app_signature证书指纹
  28. jenkinsfile调用groovy
  29. 如何为虚拟机上的 Manjaro Linux启用 VMware 拖放功能
  30. API测试工具Parasoft SOAtest:应对API变化,优化测试执行