1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python数据分布统计_Python 数据可视化:数据分布统计图和热图

python数据分布统计_Python 数据可视化:数据分布统计图和热图

时间:2021-12-28 16:57:21

相关推荐

python数据分布统计_Python 数据可视化:数据分布统计图和热图

本课将继续介绍 Seaborn 中的统计图。一定要牢记,Seaborn 是对 Matplotlib 的高级封装,它优化了很多古老的做图过程,因此才会看到一个函数解决问题的局面。

2.4.1 数据分布统计图

在统计学中,研究数据的分布情况,也是一个重要的工作,比如某些数据是否为正态分布——某些机器学习模型很在意数据的分布情况。

在 Matplotlib 中,可以通过绘制直方图将数据的分布情况可视化。在 Seaborn 中,也提供了绘制直方图的函数。

%matplotlib inline

import seaborn as sns

import numpy as np

sns.set()

np.random.seed(0)

x = np.random.randn(100)

ax = sns.distplot(x)

输出结果:

enter image description here

sns.distplot 函数即实现了直方图,还顺带把曲线画出来了——曲线其实代表了 KDE。

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)

除了 sns.distplot 之外,在 Seaborn 中还有另外一个常用的绘制数据分布的函数 sns.kdeplot,它们的使用方法类似。

2.4.2 联合统计图

首先看这样一个示例。

sns.set(rc={'axes.facecolor':'cornflowerblue', 'figure.facecolor':'cornflowerblue'}) #①

tips = sns.load_dataset("tips")

jg = sns.JointGrid(x='total_bill', y='tip', data=tips) #②

输出结果:

image

① 的作用是设置所得图示的背景颜色,这样做的目的是让下面的 ② 绘制的图像显示更清晰,如果不设置 ①,在显示的图示中看到的就是白底图像,有的部分看不出来。

② 最终得到的是坐标网格,而且在图中分为三部分,如下图所示。

image

相对于以往的坐标网格,多出了 B 和 C 两个部分。也就是说,不仅可以在 A 部分绘制某种统计图,在 B 和 C 部分也可以绘制。

继续操作:

jg = sns.JointGrid(x='total_bill', y='tip', data=tips)

jg.plot(sns.regplot, sns.distplot) #③

输出结果:

image

语句 ③ 实现了在坐标网格中绘制统计图的效果,jp.plot 方法以两个绘图函数为参数,分别在 A 部分绘制了回归统计图,在 B 和 C 部分绘制了直方图,而且直方图分别表示了对应坐标轴数据的分布,即:

A 部分表示的是两个特征之间的关系;

B 和 C 部分分别表示某一个特征的数据分布。

我们把有语句 ② 和 ③ 共同实现的统计图,称为联合统计图。除了用 ② ③ 两句可以绘制这种图之外,还有一个函数也能够“两步并作一步”,具体如下:

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)

注意,参数 kind 的取值只能是“scatter”、“reg”、“resid”、“kde”、“hex”中的一个,这就规定了在 A 区中所显示的统计图的种类。

sns.set()

sns.jointplot(x="total_bill", y="tip", kind='reg', data=tips) #④

输出结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。