数据分析可视化常用图介绍以及相关代码实现(箱型图、Q-Q图、Kde图、线性回归图、热力图)

简介: 数据分析可视化常用图介绍以及相关代码实现(箱型图、Q-Q图、Kde图、线性回归图、热力图)

前言


爱意随风起,风止意难平。


一、箱型图是什么?


1-1、箱型图介绍


箱型图:箱线图也称箱须图、箱形图、盒图,用于反映一组或多组连续型定量数据分布的中心位置和散布范围。箱形图包含数学统计量,不仅能够分析不同类别数据各层次水平差异,还能揭示数据间离散程度、异常值、分布差异等等。


a902f2da0c0e4e53bf3c2378f86fef04.png



下边缘(Q1),表示最小值;下四分位数 - 1.5 ×(上四分位数-下四分位数)

下四分位数(Q2),又称“第一四分位数”,等于该样本中所有数值由小到大排列后第25%的数字;

中位数(Q3),又称“第二四分位数”等于该样本中所有数值由小到大排列后第50%的数字;

上四分位数(Q4),又称“第三四分位数”等于该样本中所有数值由小到大排列后第75%的数字;

上边缘(Q5),表述最大值。上四分位数 + 1.5 ×(上四分位数-下四分位数)

异常值:在上边缘和下边缘的范围之外,就是异常值。


1-2、箱型图的作用


1、箱子的宽度在一定程度上反映了数据的波动程度,箱体越扁说明数据越集中,而箱体越长,则说明数据越分散。

2、可以清晰地观察到数据的整体分布情况,可以清楚的看到数据的下边缘、下四分位数、中位数、上四分位数、上边缘、异常值。

3、箱型图最大的优点是不受异常值的影响,可以以一种相对稳定的方式描述数据的离散分布情况。

4、对于太离谱的值,可以直接删掉,亦或者是变为缺失值,按照缺失值来处理,比如说均值填充、众数填充、中位数填充、使用其他数据来预测该值等等。


1-3、实战

# 使用matplotlib和seaborn来绘制图像
import matplotlib.pyplot as plt
import seaborn as sns
# 设置尺寸。
fig = plt.figure(figsize=(8, 12))  # 指定绘图对象宽度和高度
# 以y为轴进行绘制
sns.boxplot(y = [2,4,6,8,10,20,-8,50,-20], width=0.5)


3c7b4d8dba9640618edf4b0bda0d0dd2.png

二、Q-Q图是什么?


2-1、Q-Q图(分位数-分位数图:quantile-quantile plot)介绍


Q-Q图:Q-Q(分位数 - 分位数)图是概率图,其是通过将绘制两个概率分布的分位数来比较两者分布关系的图形方法,主要作用是判断样本是否近似于某种类型的分布,这里以正态分布为例。


ff18d905213b42ec9e5886a184d10cc6.png



注意:蓝色越接近红色参考线,说明越符合预期分布。

2-2、实战

import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
fig = plt.figure()
# 第一个参数:从哪个样本中创建。
res = stats.probplot(train[‘SalePrice’], plot=plt) 
# 默认检测是正态分布
# 完整写
# stats.probplot(grade, dist=stats.norm, plot=plt)        #正态分布
# stats.probplot(grade, dist=stats.expon, plot=plt)       #指数分布
# stats.probplot(grade, dist=stats.logistic, plot=plt)    # 对数正态分布
plt.show()


通常配合直方图来一起分析😒

# 直方图又称质量分布图,它是表示资料变化情况的一种主要工具。用直方图可以解析出资料的规则性,比较直观地看出产品质量特性的分布状态,
# -> 对于资料分布状况一目了然,便于判断其总体质量分布情况。直方图表示通过沿数据范围形成分箱,
# -> 然后绘制条以显示落入每个分箱的观测次数的数据分布。
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
plt.figure(figsize=(10,5))
ax=plt.subplot(1,2,1)
sns.distplot(train_data['V0'],fit=stats.norm)
ax=plt.subplot(1,2,2)
res = stats.probplot(train_data['V0'], plot=plt)



b62ca81ce0f14f8eaa8115c54b8304d3.png


2-3、为什么要使数据呈现正态分布以及出现了正态分布,数据应该如何处理?


为什么要使数据呈现正态分布:很多模型假设数据服从正态分布后,它的样本均值和方差就相互独立,这样能更好地进行统计推断和假设验证。

数据应该如何处理数据预处理—4.为什么要趋近于正态分布?详解.


三、Kde图是什么?

3-1、Kde图介绍


Kde图介绍: 是指Kernel Density Estimation核概率密度估计。可以理解为是对直方图的加窗平滑。通过KDE分布图,可以查看并对训练数据集和测试数据集中特征变量的分布情况。它描述了连续变量中不同值的概率密度。在概率论中用来估计未知的密度函数,属于非参数检验方法之一。通过核密度估计图可以比较直观的看出数据样本本身的分布特征。


8b7348efaa3442d3985076b6f99bd24b.png


3-2、实战


# 把每一个特征对应的分布图都画出来,分别调节。
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
ax = sns.kdeplot(train_data['V0'], color="Red", shade=True)
ax = sns.kdeplot(test_data['V0'], color="Blue", shade=True)
ax.set_xlabel('V0')
ax.set_ylabel("Frequency")
ax = ax.legend(["train","test"])

cce8fe18b9304a19aedef4aa78d75af7.png


3-3、分布不一致如何处理?


分布不一致: 如果出现分布不一致的情况,我们需要将特征直接删除。

原因: 如果训练数据和测试数据的某个特征分布不一致,会导致模型的泛化能力差,我们要直接删除此类特征方法。

0cb7f45c2e7b438a8ba9f8bba4fc5740.png


三、线性回归图


4-1、线性回归图绘制函数介绍


seaborn.regplot():: 该方法用于绘制数据和线性回归模型拟合。有许多相互排斥的选项可用于估计回归模型。


4-2、实战

# 探索特征变量V0与target变量的线性回归关系。
fcols = 2
frows = 1
plt.figure(figsize=(8,4))
ax=plt.subplot(1,2,1)
sns.regplot(x='V0', y='target', data=train_data, ax=ax, 
            scatter_kws={'marker':'.','s':3,'alpha':0.3},
            line_kws={'color':'k'});
plt.xlabel('V0')
plt.ylabel('target')
ax=plt.subplot(1,2,2)
sns.distplot(train_data['V0'].dropna())
plt.xlabel('V0')
plt.show()

1296c29909154dc886ecee4da4569179.png


4-3、相关性不高如何处理?


相关性不高:相关系数越大,则认为这些特征变量对target变量的线性影响越大,相关性系数较小的话,特征对于模型的拟合会起到反作用,通常和热力图一起来查看相关性。

import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
# 调用dataframe的相关性矩阵。
train_corr = data_train1.corr()
# 画出相关性热力图
ax = plt.subplots(figsize=(20, 16))#调整画布大小
ax = sns.heatmap(train_corr, vmax=.8, square=True, annot=True)#画热力图   annot=True 显示系数

ca9997679e8a45a1a5ad4e1cf2fe0a29.png


数据应该如何处理?与目标变量相关系数小于0.5的特征变量一般都会直接被删掉。

注意:对于target变量如果存在更复杂的函数形式的影响,建议使用树模型的特征重要性去选择。

多重共线性: 多重共线性是指自变量彼此相关的一种情况。当你拟合模型并解释结果时,多重共线性可能会导致问题。数据集的变量应该是相互独立的,以避免出现多重共线性问题。对于一个数据集,如果一些自变量彼此高度独立,就会导致多重共线性。

如何处理多重共线性?即如何处理特征之间的高度相关?我们可以删除一些高度相关的特征(相关性大于0.9),去除数据中的多重共线性,但是!!! 可能会导致信息的丢失,对于高维数据也是不可行的技术。但是可以使用PCA算法来降低数据的维数,从而去除低方差的变量。

结语:以上都是瞎扯,请自行调参,实践是检验真理的唯一标准。


参考文章:

统计学(二)——从箱型图去理解数据.

什么是箱线图,箱线图要怎么做?.

如何深刻理解箱线图(boxplot).

箱形图怎么看,以及它反映了什么?.

通俗讲解qq plot.

QQ plot图——评价你的统计模型是否合理.

使用 Pandas 和 Seaborn 进行 KDE 绘图可视化.

工业蒸汽 02数据探索.


总结


OS:这篇文章写的很好,以后不许再写了。


相关文章
|
22天前
|
人工智能 数据可视化 数据挖掘
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
|
3天前
|
数据可视化 数据挖掘
R语言生存分析数据分析可视化案例(上)
R语言生存分析数据分析可视化案例
|
13天前
|
数据采集 数据可视化 数据挖掘
SciPy在数据分析中的应用:从数据清洗到可视化
【4月更文挑战第17天】# SciPy在数据分析中的应用:从数据清洗到可视化。文章探讨了SciPy在数据清洗(使用NumPy处理缺失值和异常值)、数据分析(描述性统计和模型拟合)以及数据可视化(结合Matplotlib和Seaborn进行图表绘制)中的作用。SciPy与其他Python库结合,为完整的数据分析流程提供了强大支持。
|
22天前
|
人工智能 数据可视化 数据挖掘
【python】Python国内GDP经济总量数据分析可视化(源码+报告)【独一无二】
【python】Python国内GDP经济总量数据分析可视化(源码+报告)【独一无二】
|
22天前
|
机器学习/深度学习 数据可视化 算法
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】
|
22天前
|
机器学习/深度学习 数据可视化 数据挖掘
【python】双十一美妆数据分析可视化 [聚类分析/线性回归/支持向量机](代码+报告)【独一无二】
【python】双十一美妆数据分析可视化 [聚类分析/线性回归/支持向量机](代码+报告)【独一无二】
|
23天前
|
机器学习/深度学习 数据可视化 数据挖掘
利用Python进行数据分析与可视化:从入门到精通
本文将介绍如何使用Python语言进行数据分析与可视化,从基础概念到高级技巧一应俱全。通过学习本文,读者将掌握Python在数据处理、分析和可视化方面的核心技能,为实际项目应用打下坚实基础。
|
27天前
|
人工智能 监控 数据可视化
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
|
1月前
|
数据采集 数据可视化 数据挖掘
Python中的数据分析与可视化技术应用
在当今信息爆炸的时代,数据分析和可视化技术成为了各行各业不可或缺的工具。本文将介绍Python语言在数据分析和可视化领域的应用,包括常用的数据处理库、数据可视化库以及实际案例分析,帮助读者更好地理解和运用Python进行数据分析与可视化。
|
1月前
|
监控 数据可视化 算法
上网行为监控管理:利用R编写的数据分析和可视化代码示例
本文介绍了使用R语言进行上网行为监控管理的方法。通过加载和分析日志数据,如示例代码所示,可以了解用户行为。使用ggplot2绘制时间趋势图以洞察用户访问模式,借助caret进行聚类分析以识别异常行为。此外,利用httr包可自动将数据提交至网站,提升管理效率。R语言为网络安全和行为监控提供了强大工具。
85 0