醫學數據分析實戰:冠心病發病因素可視化

一、數據加載與基本信息檢查

#例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.pswp.cn/diannao/88261.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/diannao/88261.shtml
    英文地址,請注明出處:http://en.pswp.cn/diannao/88261.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    Proteus8.0 打開前期版本的操作方法

    1.打開Proteus8.0 2. 打開菜單File->Import legacy Project 3.在Import Legacy Project 點擊Browse按鈕 4.選擇要打開的例子目錄 5.打開*.dsn文件 6.點擊Import 7.導入成功 點擊運行即可

    【innovus基礎】- 對某根線單獨route

    在某些特殊需求場景,我們可能需要對某些net進行單獨的route,方法如下: 1、打開design browser,選擇對應net:(或者使用selectNet命令) 2、Route → nano Route → 勾選selectNet only 可以看到…

    【Linux】network網絡配置

    目錄 1、介紹2、網絡配置【1】查看【2】說明 3、工作流程【1】啟動以太網接口【2】關閉接口時反向執行 4、現代替換方案 1、介紹 linux中network網絡服務的核心配置位于/etc/sysconfig/network-scripts/目錄下。它們共同構成了網絡接口的管理框架,負責處理網絡接口…

    深入解析 Taro 項目結構:從入門到精通

    在現代前端開發中,跨平臺開發框架變得越來越重要。Taro 作為一款由京東凹凸實驗室推出的多端統一開發框架,支持編譯到微信小程序、支付寶小程序、百度小程序、H5、React Native 等多個平臺,極大地提高了開發效率。然而,要充分發揮…

    零基礎開始的網工之路第二十一天------系統安全基線和系統加固

    目錄 一、系統安全基線 1、賬戶與認證安全 2、文件與目錄權限 3、SSH服務安全 4、網絡與服務配置 5、日志與審計 6、內核參數加固 7、更新與補丁 8、安全模塊配置 9、SUID/SGID文件檢查 10、默認權限控制(umask) 二、系統安全加固 1、賬戶與…

    Log4j 和 Log4j2的比較

    以下是 Log4j(通常指 Log4j 1.x)與 Log4j2 的核心對比分析,結合架構、性能、功能及適用場景,幫助開發者做出合理選擇: 📊 一、架構與設計 特性Log4j 1.xLog4j2分析架構模型單模塊設計,耦合度高…

    說說 Springboot 的啟動流程?

    Spring Boot 的啟動流程是一個相對復雜但有序的過程,它涉及多個組件和步驟的協同工作。以下是 Spring Boot 啟動流程的詳細解析: 一、初始化階段 啟動入口 Spring Boot 應用的啟動入口通常是一個包含 main 方法的類,該類上標注了 SpringBoot…

    從服務器收到預料之外的響應。此文件可能已被成功上傳。請檢查媒體庫或刷新本頁

    如果php.ini已經加入了如下的內容還是報錯 : upload_max_filesize 1024M post_max_size 1024M 那就是因為阿帕奇導致:

    10、java語法糖

    編譯期處理:語法糖(即java編譯器把。java的源碼編譯成。class字節碼的過程中,自動生成和轉換的一些代碼,主要是為了減輕程序員的負擔,算是java編譯器給我們的一個額外福利-給糖吃) 默認構造器:…

    在Vscode中安裝Sass并配置

    在Vscode中安裝Sass并配置 sass簡介安裝Sass插件配置sass插件編寫sass使用Sass sass簡介 Sass(Syntactically Awesome Style Sheets,英文官方文檔 )是一種CSS預處理器,擴展了CSS的功能并提供了更高效的樣式表編寫方式。它兼容所有CSS版本&am…

    深入解析 MySQL 并發控制:讀寫鎖、鎖粒度與高級優化

    深入解析 MySQL 并發控制:讀寫鎖、鎖粒度與 InnoDB 實現細節 在高并發數據庫應用中,確保數據一致性的同時最大化性能是永恒的挑戰。MySQL 通過精巧的 鎖機制(Locking) 和 多版本并發控制(MVCC) 來解決這個問題。本文聚焦于鎖機制的核心:讀寫鎖(共享/排他鎖) 和 鎖粒度…

    【深度學習加速探秘】Winograd 卷積算法:讓計算效率 “飛” 起來

    一、為什么需要 Winograd 卷積算法?從 “卷積計算瓶頸” 說起 在深度學習領域,卷積神經網絡(CNN)被廣泛應用于圖像識別、目標檢測、語義分割等任務。然而,卷積操作作為 CNN 的核心計算單元,其計算量巨大&a…

    前端項目脫離后端運行,備份后端API數據

    問題描述: 開發過的項目老是打不開,因為離開公司后服務器用不了了。所以想著在公司開發的時候把數據都備份一下,供之后參考項目代碼。 實現方法: 建一個Express服務,前端請求Express,Express代理目標服務器…

    Windows下利用DevEcoStudio的交叉編譯工具鏈編譯assimp庫給OpenHarmony使用

    文章目錄 準備編譯使用 準備 安裝DevEco Studio,并且安裝好對應OpenHarmony版本的SDK 比如我這里安裝了API 11 的sdk 對應的文件夾 然后下載ASSIMP的源文件,我這里下載的是5.4.3版本 【assimp 5.4.3】 解壓放在一個文件夾里面,并在源碼文…

    批量大數據并發處理中的內存安全與高效調度設計(以Qt為例)

    背景 在批量處理大型文件(如高分辨率圖片、視頻片段、科學數據塊)時,開發者通常希望利用多核CPU并行計算以提升處理效率。然而,如果每個任務對象的數據量很大,直接批量并發處理極易導致系統內存被迅速耗盡,出現程序假死、崩潰,甚至系統級“死機”。 Qt自帶的線程池(Q…

    微信小程序課程設計美食點餐訂餐系統

    文章目錄 1. 項目概述2. 項目思維導圖3. 系統架構特點4. 核心模塊實現代碼1. 登錄注冊2. 首頁模塊實現4. 分類模塊實現5. 購物車模塊實現6. 訂單模塊實現 5. 注意事項6. 項目效果截圖7. 關于作者其它項目視頻教程介紹 1. 項目概述 在移動互聯網時代,餐飲行業數字化…

    Linux中使用grep查看日志

    Linux中使用grep查看日志 文章目錄 Linux中使用grep查看日志1、使用 grep 查找字符或字符串示例常用選項例子 2、顯示前后上下文選項說明示例命令 結果示例 3、顯示出現的次數使用示例選項說明示例其他方法總結 4、其他命令1. 基本用法2. 常用選項3. 正則表達式支持4. 其他實用…

    DataWhale-零基礎絡網爬蟲技術(二er數據的解析與提取)

    課程鏈接先給各位 ↓↓↓ (點擊即可食用.QAQ Datawhale-學用 AI,從此開始 一、數據的解析與提取 數據提取的幾種方式: re解析bs4解析xpath解析 1.1正則表達式(Reuglar Experssion) RE是一種用于字符串匹配的規則描述方式。它…

    Gin框架與Apifox

    第一部分:技術棧概述 1. Go語言簡介 Go(又稱Golang)是Google開發的一門靜態類型、編譯型編程語言,具有以下特點: 高性能:編譯為機器碼,執行效率接近C/C 簡潔語法:沒有復雜的OOP概…

    Docker 容器技術入門與環境部署

    一、Docker 技術概述與核心概念解析 (一)Docker 技術本質與定位 Docker 是當前主流的操作系統級容器虛擬化技術,其核心價值在于通過輕量化隔離機制解決開發、測試與生產環境的一致性問題。與傳統虛擬機(如 VMware)相…