Python训练营打卡Day9

day9

热力图和子图的绘制

知识点:

  1. 介绍了热力图的绘制方法
  2. 介绍了enumerate()函数
  3. 介绍了子图的绘制方法

作业:

尝试对着心脏病数据集绘制热力图和单特征分布的大图(包含几个子图)

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_csv(r'heart.csv')
print(data.info())
 
# 自动识别连续值特征
# 假设连续值特征为数值类型且唯一值数量大于一定阈值(这里设为10)
continuous_features = []
for col in data.columns:
    if data[col].dtype in ['int64', 'float64'] and data[col].nunique() > 10:
        continuous_features.append(col)
print("连续值特征:", continuous_features)
 
# 提取连续值特征的数据
continuous_data = data[continuous_features]
 
# 计算连续值特征的相关系数矩阵
correlation_matrix = continuous_data.corr()
 
# 设置图片清晰度
plt.rcParams['figure.dpi'] = 100
 
#1. 绘制热力图
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, fmt=".2f", cmap='coolwarm')
plt.title('Correlation Heatmap of Continuous Features')
plt.show()
 
#2.子图的绘制
features = continuous_features[:4]  # 选择前4个连续值特征进行绘图
plt.rcParams['figure.dpi'] = 100
# 创建2x2的子图
fig, axes = plt.subplots(2, 2, figsize=(12, 10))  
# 遍历每个特征并绘制散点图
#3.enumerate()函数的使用
#enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。
for i, feature in enumerate(features):
    row = i // 2  # 计算当前子图的行索引
     # 例如 0//2=0, 1//2=0, 2//2=1, 3//2=1
    col = i % 2   # 计算当前子图的列索引
    #绘制箱线图
    axes[row, col].boxplot(data[feature].dropna())  # 去除缺失值
    # 设置子图标题
    axes[row, col].set_title(f'Boxplot of {feature}')
    # 设置x轴标签
    axes[row, col].set_xlabel('Feature')
 
# 调整子图间距
plt.tight_layout()
# 显示图形
plt.show() 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值