Python打卡学习DAY7

针对心脏病项目的数据集来完成数据的预处理。

import pandas as pd
data=pd.read_csv('heart.csv')
data.info()
data.isnull().sum()
data.head()
# data['target'].value_counts()
 
 
# 根据特征的实际意义,定义离散型特征和连续型特征
continous_features=['age','trestbps','chol','thalach','oldpeak']
discrete_features=['sex','cp','fbs','restecg','exang','slope','ca','thal']
 
# 离散特征缺失值使用众数补全
for c in discrete_features:
    if data[c].isnull().sum()>0:
        data[c].fillna(data[c].mode()[0],inplace=True)
 
# 连续特征缺失值使用均值补全
for c in continous_features:
    if data[c].isnull().sum()>0:
        data[c].fillna(data[c].mean(),inplace=True)
 
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
 
# 对连续特征绘制箱线图
for c in continous_features:
    sns.boxplot(x=data[c])
    plt.title(f'{c} 箱线图') 
    plt.xlabel(c)
    plt.show()
 
# 对离散特征绘制条形图
for c in discrete_features:
    sns.countplot(x=data[c])
    plt.title(f'{c} 条形图')
    plt.xlabel(c)
    # plt.xticks(rotation=45, ha='right')  # 旋转45度,并右对齐
    plt.tight_layout()  # 自动调整子图参数,提供足够的空间
    plt.show() 
 
# 绘制离散特征和连续特征之间的关系图
for x in discrete_features:
    for y in continous_features:
        # 箱线图
        sns.boxplot(x=x, y=y, data=data) 
        plt.title(f'{x} vs {y}') 
        plt.xlabel(x) 
        plt.ylabel(y) 
        plt.show() 
 
        # 小提琴图
        sns.violinplot(x=x, y=y, data=data) 
        plt.title(f'{x} vs {y}') 
        plt.xlabel(x) 
        plt.ylabel(y) 
        plt.show() 
 
        # 直方图+核密度估计
        sns.histplot(x=y, hue=x, data=data, kde=True) 
        plt.title(f'{x} vs {y}') 
        plt.xlabel(y) 
        plt.ylabel('Count')
        plt.show() 

 @ 浙大疏锦行

你可能感兴趣的:(python打卡学习,python,学习,开发语言)