Day 6 数据初步可视化——描述性统计

@浙大疏锦行

今日任务:

  1. 单特征可视化:连续变量箱线图(核密度直方图)、离散特征直方图
  2. 特征和标签关系可视化
  3. 箱线图美化与直方图

对于数据可视化操作一般分为三种,即单特征分布可视化、特征与标签关系可视化和特征与特征关系可视化。

选择信贷数据集进行处理,读取数据:

import pandas as pd
data = pd.read_csv(r"D:\机器学习\Python训练营代码【2025.7.30版本】\data.csv")
data.tail()

单特征分布可视化

找到连续特征

在day 5中学习了寻找离散特征的方法,同理可以得到寻找连续特征的代码。这样的代码看上去简单直观,非常适合初学者。

#连续特征的寻找
continuous_features = [] #创建空列表
for column in data.columns: #遍历
    if data[column].dtype != 'object': #判断
        continuous_features.append(column) #添加
continuous_features

此外,还有一种直接调用函数的方法完成特征的筛选,即select_dtypes()根据数据类型选择列:

  • include:指定要包含的数据类型,include=['object']
  • exclude:指定要排除的数据类型
  • 由于返回的是指定的列,故而获取列名时采用了columns属性
data.select_dtypes(include=['float64','int64']).columns.tolist()

Matplotlib库

在数据可视化的操作中,常用的库为matplotlib和seaborn。在绘制图得过程中需要确定图的类型、坐标轴、数据的传入、标签及标题等。

根据数据类型和分析目标选择合适的图表类型,常见的绘图类型有:

  • 数值变量分布分析:直方图(histogram)、核密度估计图(kde plot)、箱线图(boxplot)、小提琴图(violinplot)
  • 关系分析:散点图(scatterplot)、回归图(regplot)、热力图(heatmap)
  • 分类数据比较:柱状图(barplot)、计数图(countplot)、饼图(pie)
  • 时间序列分析:折线图(lineplot)

绘制图表时的一般步骤为:(1)导入库(2)(设置画布),确定图表类型,传入数据(3)添加元素:label、title等(4)修改可选参数,美化图表。此外在绘图过程中应注意,中文字体显示不全以及负号显示问题,需在绘图前使用plt.rcParams设置好。

#中文字体显示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False

下面是选择了两种特征分别绘制了图表的例子:

(1)箱线图

适用于数值变量与分类变量,对于一定量数据包含一类含有多个特征的定类数据如一个班的各科(定类)成绩(定量)。可用来查看分布、离群值、比较不同类别等。

  • data:绘图数据包含的dataframe,当使用x, y参数指定列名时必选
  • x、y:x轴(分类变量,object或category),y轴(数值变量,int或float)
  • hue:用于分组的分类变量,可绘制分组箱线图
  • orient(v、h)、color、palette、width等
import matplotlib.pyplot as plt
import seaborn as sns

#连续特征描述
plt.figure(figsize=(6,4)) #设置画布大小
sns.boxplot(data=data,y='Annual Income',x='Home Ownership') #绘图
plt.title('Annual Income & Home Ownership')
plt.show()

对于箱线图的解读,要关注以下几点,具体解读分析参考:一文读懂箱线图

  • 箱体: 显示数据的四分位数范围(IQR)
  • 中线: 中位数(50%分位数)
  • 须线: 通常为1.5倍IQR范围内的数据
  • 离群点: 超出须线范围的数据点,以圆点展示
  • 箱体高度: 反映数据的集中程度(Q3-Q1,50%的数据)

(2)直方图

适用于单个数值变量的分布,可查看数据分布形态、异常值、偏度。

  • data:绘图数据包含的dataframe,当使用x, y参数指定列名时必选
  • x、y:指定要绘制直方图的变量
  • hue:用于分组的分类变量
  • bins:控制直方图的柱子数量(int)或边界(序列),默认'auto'
  • kde:是否显示核密度估计曲线,默认False
#离散特征描述
plt.figure(figsize=(6,4))
sns.histplot(data=data,y='Years in current job',color='coral')
#plt.xticks(rotation=45)
plt.tight_layout() #自动调整子图参数,提供足够的空间
plt.title('Years in current job of histgram')
plt.show()

绘制特征和标签的关系

在信贷数据集中,标签为‘Credit Default’,即是否违约,包含两种情况。下面为离散标签与连续特征、离散标签与离散特征绘图示例。

离散标签与连续特征

箱线图

查看数据分布情况及异常值。选择一连续变量与标签绘制分组箱线图,结果如下:

plt.figure(figsize=(6,4))
sns.boxplot(data=data,y='Monthly Debt',x='Credit Default',hue='Term')
plt.title('Monthly Debt & Credit Default')
plt.show()

小提琴图

相较于箱线图,小提琴图可展示出数据分布的轮廓情况,包括分布轮廓和分布区域。

plt.figure(figsize=(6,4))
sns.violinplot(data=data,y='Current Credit Balance',x='Credit Default')
plt.title('Current Credit Balance & Credit Default')
plt.show()

直方图+kde

具体频数+平滑形状。直方图本质是离散的,即使用于连续变量也是用离散的bins来近似。而使用kde可以提供连续视图,实现连续地描述分布。

plt.figure(figsize=(6,4))
sns.histplot(data=data,x='Monthly Debt',hue='Credit Default',kde=True,element="step")
plt.tight_layout()
plt.title('Monthly Debt & Credit Default')
plt.show()

离散标签与离散特征

数值变量有的是连续变量,但有的是离散变量(数量有限)。比如,在信贷数据集中,‘Annual Income’为连续变量,而'Number of Open Accounts'为离散变量。

计数图(countplot)

适用分类变量,可查看各类别的频数分布

  • data:绘图数据包含的dataframe,当使用x, y参数指定列名时必选
  • x、y:指定要计数的分类变量
  • hue:用于进一步分组的第二个分类变量
plt.figure(figsize=(6,4))
sns.countplot(data=data,x='Number of Open Accounts')
plt.xticks(rotation=45)
#plt.title('Current Credit Balance & Credit Default')
plt.show()

分箱

类别太多时,图表看上去会比较散。由于是数值型,采用分组的方法减少类别。此处使用 pandas 的 cut() 函数将连续的数值变量分箱(离散化)为分类变量,pd.cut():

  • 分箱的原始列
  • 定义分箱边界bins:分箱上界,float('inf')正无穷大
  • 分箱标签labels:标签数比分箱数少一个
#分箱
data['Number of Open Accounts'] = pd.cut(data['Number of Open Accounts'], #分箱原始列
                                         bins=[0,5,10,15,20,25,float('inf')], #分箱边界
                                         labels=['0-5','5-10','10-15','15-20','20-25','25+'])
#画图
plt.figure(figsize=(6,4))
sns.countplot(data=data,x='Number of Open Accounts',hue='Credit Default')
plt.xticks(rotation=45)
plt.title('Number of Open Accounts & Credit Default')
plt.show()

进行数据可视化的初步分析,主要为了得到数据的分布、变量间的关系,根据目的选择合适的图表进行展现。如果为了提高美观度,查阅函数的相关参数进行调整即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值