python连续型单变量的数据可视化之hist、kdeplot、distplot

目录

  • 1.hist
  • 2. kdeplot
  • 3.jointplot联合概率分布

在单变量为分类变量的时候,数据的分析会相对简单,可以通过非常简单的sum,mean等统计变量直接查看自己需要的统计信息基本就能满足我们的需求,非常简单,并不会给我们带来非常大的困难,但是如果单变量为连续变量的时候,数据的可视化就较为重要.

一般最常见的对连续单变量特征进行分析的情况会出现在回归等问题中,这个时候通过可视化的方式可以很快地让我们了解到数据的分布情况以及是否有奇异值的情况.这对我们数据的处理能带来极大的方便.
  
  首先导入所需要的包

import numpy as np
import pandas as pd
import warnings
from scipy import stats,integrate
import matplotlib.pyplot as plt
warnings.filterwarnings('ignore')   #忽略了警告错误的输出
import seaborn as sns
sns.set_style("darkgrid")
sns.set(color_codes=True)  #set( )设置主题,调色板更常用  

np.random.seed(sum(map(ord, “distributions”)))

  • ord()函数它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值.
  • 如果所给的Unicode字符超出了你的Python定义范围,则会引发一个TypeError的异常.
  • 利用np.random.seed()函数设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数.

1.hist

绘制直方图的方法在matplotlib中,这个方法可以直观地让我们了解到散落在各个区间的数据的情况(数据分布), hist默认为10个bins.

import numpy as np
import matplotlib.pyplot as pltx=np.random.normal(size=100)
plt.hist(x)

在这里插入图片描述

2. kdeplot

对于连续的变量,光看直方图肯定是不够的,数据的分布的观察也是必不可少的,这时我们需要借用KDE(Kernel Density Estimate)函数。

import numpy as np
import matplotlib.pyplot as pltx=np.random.normal(size=100)
sns.kdeplot(x,shade=True)

在这里插入图片描述
KDE的带宽 bandwidth(bw)参数控制估计对数据的拟合程度,与直方图中的bin(数据切分数量参数)大小非常相似。 它对应于我们上面绘制的内核的宽度。

import numpy as np
import matplotlib.pyplot as pltx=np.random.normal(size=100)
sns.kdeplot(x)
sns.kdeplot(x, bw=.2, label="bw: 0.2")
sns.kdeplot(x, bw=2, label="bw: 2")
plt.legend()

在这里插入图片描述

seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)
Parameters:

  • a : Series, 1d-array, or list. #一维数组
  • bins : argument for matplotlib hist(), or None, optional #设置分桶数
  • hist : bool, optional #控制是否显示分桶柱子
  • kde : bool, optional #控制是否显示核密度估计图
  • rug : bool, optional #控制是否显示观测实例竖线
  • fit : random variable object, optional #控制拟合的参数分布图形
  • {hist, kde, rug, fit}_kws : dictionaries, optional
    Keyword arguments for underlying plotting functions.
  • vertical : bool, optional #显示正交控制, If True, oberved values are on y-axis.
fig, ax = plt.subplots(figsize=(15, 5))
sns.set(font='SimHei', font_scale=1.0)  # 解决Seaborn中文显示问题并调整字体大小
sns.distplot(df_profile_sum['sum'], kde=True, rug=False, color='g', label='差分之和')
ax.set_title('diff_sum_kde')
ax.legend()
ax.figure.savefig('F:\\02-data\\' + datetime.now().strftime('%m%d%H%M') +'diff_sum_kde.jpg')

在这里插入图片描述

3.jointplot联合概率分布

# 'sum', 'width' 为要求的两列的列名
sns.jointplot('sum', 'width', df_profile_sum, kind='reg', marker='.')
plt.ylabel('width')
plt.xlabel('sum')
plt.show()

在这里插入图片描述

seaborn.jointplot(x, y, data=None, kind='scatter', stat_func=None, color=None, height=6,ratio=5, space=0.2, dropna=True, xlim=None, ylim=None, joint_kws=None,marginal_kws=None, annot_kws=None, **kwargs)
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib
import pandas as pdmatplotlib.use('TkAgg')rs = np.random.RandomState(2)
df = pd.DataFrame(rs.randn(200, 2), columns=['A', 'B'])sns.jointplot(x=df['A'], y=df['B'],  # 设置x轴和y轴,显示columns名称data=df,   # 设置数据color='k',   # 设置颜色s=50, edgecolor="w", linewidth=1,  # 设置散点大小、边缘线颜色及宽度(只针对scatter)kind='scatter',   # 设置类型:“scatter”、“reg”、“resid”、“kde”、“hex”space=0.1,  # 设置散点图和上方、右侧直方图图的间距size=6,   # 图表大小(自动调整为正方形)ratio=3,  # 散点图与直方图高度比,整型marginal_kws=dict(bins=15, rug=True, color='green')  # 设置直方图箱数以及是否显示rug)
plt.show()

在这里插入图片描述

参考链接:
[1] seaborn 数据可视化(一)连续型变量可视化 2018.12
[2] 数据可视化(15)-Seaborn系列 | 双变量关系图jointplot() 2019.10
[3] seaborn分布数据可视化:直方图|密度图|散点图 2019.8


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部