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

day7 python针对心脏病数据集预处理

在数据科学与机器学习领域,数据预处理与可视化是挖掘数据价值的关键前置步骤。本文以 heart1.csv 心脑血管疾病数据集为例,借助 Python 中的 pandasmatplotlibseaborn 以及 scikit-learn 库,详细演示数据加载、缺失值处理、特征相关性分析、单特征可视化等核心操作,帮助读者快速掌握数据探索的实用技能。

一、数据处理与可视化库导入

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

在数据探索任务中,选用合适的工具库能大幅提升工作效率。上述代码导入了六个关键库:

  • pandas:作为数据处理的核心库,用于读取、清洗、转换和分析结构化数据,在后续的数据加载与预处理环节中发挥重要作用。
  • matplotlib 与 seaborn:数据可视化的利器,其中 seaborn 基于 matplotlib 进行了高级封装,能够绘制出更美观、专业的图表,助力数据特征的直观呈现。
  • SimpleImputer(来自 scikit-learn):专门用于处理数据中的缺失值,提供了多种填充策略,确保数据的完整性。
  • OneHotEncoder(同样来自 scikit-learn):针对离散特征进行独热编码,将分类数据转换为机器学习算法易于处理的数值形式。
  • ColumnTransformer:可对数据集中不同类型的列,灵活应用不同的预处理方法,实现数据预处理流程的自动化与规范化。

二、数据加载与初步检查

2.1 数据加载

# 1. 数据加载与初步检查
data = pd.read_csv('heart1.csv')
print(f"数据集形状: {data.shape}\n")

数据探索的第一步是将数据集加载到内存中。通过 pd.read_csv('heart1.csv') 语句,pandas 库将 heart1.csv 文件中的数据读取,并存储为 DataFrame 格式,赋值给 data 变量。随后,两行打印语句分别输出数据加载成功的提示信息,以及数据集的形状(包含行数和列数),帮助我们快速了解数据集的规模。例如,若输出 数据集形状: (1000, 10),则表示该数据集包含 1000 条记录和 10 个特征。

2.2 数据预览与缺失值检查

# 数据预览
print(data.head())
print("缺失值分布:")
print(data.isnull().sum())

成功加载数据后,需要对数据的内容和质量进行初步检查。data.head() 方法默认展示数据集的前 5行数据,通过观察这些数据,可以了解数据的大致结构、各列的数据类型以及数据的取值范围。而 data.isnull().sum() 则用于统计数据集中每列缺失值的数量。例如,若某列输出的结果为 50,则表示该列存在 50 个缺失值。通过这一步骤,能够快速定位存在缺失值的特征列,为后续的缺失值处理提供依据。

三、数据可视化分析

3.1 特征相关性热力图

# 设置中文字体和负号显示
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False # 计算特征相关性矩阵
correlation_matrix = data.corr()# 绘制相关性热力图
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, cbar=True, annot=True, cmap='coolwarm')
plt.title('各特征之间的相关性热力图')
plt.show()

在数据探索过程中,了解特征之间的相关性至关重要。由于中文和负号在图表中可能出现显示异常的情况,因此首先通过 plt.rcParams 配置 matplotlib 的字体和负号显示规则,确保图表能够正确展示中文标签和负数值。

接下来,使用 data.corr() 计算数据集中所有数值型特征之间的相关性矩阵。相关性矩阵中的每个元素表示对应两个特征之间的相关系数,其取值范围在 -1 到 1 之间:

  • 接近 1 表示两个特征之间存在强正相关关系,即一个特征值增加时,另一个特征值也倾向于增加。
  • 接近 -1 表示两个特征之间存在强负相关关系,即一个特征值增加时,另一个特征值倾向于减少。
  • 接近 0 则表示两个特征之间相关性较弱。

最后,借助 seaborn 的 heatmap 函数,将相关性矩阵绘制成热力图。cbar=True 显示图例,方便我们直观了解相关系数的取值范围;annot=True 在热力图的每个单元格中标注具体的相关系数数值;cmap='coolwarm' 指定颜色映射方案,通过颜色的深浅直观反映相关系数的大小。通过观察热力图,可以快速识别出哪些特征之间存在较强的相关性,为后续的特征选择和模型构建提供重要参考。

3.2 离散特征识别与单特征可视化

# 识别离散特征
discrete_features = []
for i in data.columns:if data[i].dtype == 'object':discrete_features.append(i)# 绘制单特征可视化图表
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
sns.histplot(data['age'], kde=True, bins=20)  
plt.title('年龄分布')plt.subplot(1, 2, 2)
sns.boxplot(x=data['chol'])  
plt.title('年龄分布')
plt.tight_layout()
plt.show()

在数据集中,不同类型的特征需要采用不同的分析方法。首先,通过循环遍历数据集的所有列名,利用 data[i].dtype == 'object' 判断每列的数据类型是否为对象类型(在 pandas 中,对象类型通常用于存储字符串等离散数据),将符合条件的列名添加到 discrete_features 列表中,从而完成离散特征的识别。

为了更直观地了解数据集中连续特征的分布情况,使用 matplotlib 的 subplot 函数和 seaborn 的 histplotboxplot 函数,在同一画布上绘制两个子图:

  • 左侧子图:使用 sns.histplot(data['age'], kde=True, bins=20) 绘制年龄(age 列)的直方图。kde=True 选项在直方图上叠加核密度估计曲线,能够更平滑地展示数据的分布趋势;bins=20 将年龄数据划分为 20 个区间,有助于观察数据在不同年龄段的分布密度。
  • 右侧子图:通过 sns.boxplot(x=data['chol']) 绘制年龄(chol 列)的箱线图。箱线图能够清晰地展示数据的中位数、四分位数、最小值、最大值以及可能存在的异常值,帮助我们快速了解数据的集中趋势、离散程度和分布形态。

最后,plt.tight_layout() 自动调整子图的布局,确保子图之间不会出现标签重叠等问题,使图表更加美观和易于阅读。

通过以上一系列的数据探索操作,我们能够对 heart1.csv 数据集有更深入的了解,为后续的数据清洗、特征工程以及机器学习模型构建奠定坚实的基础。在实际的数据科学项目中,数据探索环节是不可或缺的重要步骤,通过不断尝试不同的可视化方法和分析手段,能够挖掘出数据中隐藏的有价值信息。

@浙大疏锦行

相关文章:

  • 可靠传输的守护者:揭开计算机网络传输层的奥秘
  • 2024江西ICPC部分题解
  • 多线程(1)——认识线程
  • 摩尔投票法详细介绍
  • 【C】初阶数据结构12 -- 冒泡排序
  • QT跨平台软件开发要点
  • 微信小程序鲜花销售系统设计与实现
  • ASP.NET MVC​ 入门指南三
  • QNX系统动态配置动态库.so文件日志打印级别的方法
  • 7.13 GitHub Sentinel全链路测试实战:自动化框架+零误差传输,QPS提升6倍!
  • 进行物联网安全PoC时的注意事项
  • 深度探索:DeepSeek赋能WPS图表绘制
  • 可视化性能分析工具火焰图
  • Astro canvas大屏从iotDA上抽取设备影子的参数的详细操作实施路径
  • 【Java并发】【原子类】适合初学体质的原子类入门
  • 树状数组底层逻辑探讨 / 模版代码-P3374-P3368
  • 精益数据分析(29/126):深入剖析电子商务商业模式
  • Spring和Spring Boot集成MyBatis的完整对比示例,包含从项目创建到测试的全流程代码
  • Windows 安装 MongoDB 教程
  • 【OpenCV】第二章——图像处理基础
  • 张元济和百日维新
  • 央媒关注给保洁人员设休息室:让每一份踏实奋斗得到尊重呵护
  • 四川落马厅官周海琦受审,1000余人接受警示教育
  • 伊朗国防部发言人:发生爆炸的港口无进出口军用物资
  • 艺术与医学的对话,瑞金医院办了一个展览
  • 2025年上海空间信息大会举行,重大项目集中签约