单变量的分布特征通过直方图就可以观察,而两个变量间的关系分布,用散点图更容易体现。
下面我们就介绍几种方法,简便的同时查看单变量分布和两个变量间相关性的分布
老版本用的是 distplot, 现在用还不会报错,只是提示说 distplot 之后就要被遗弃了,建议用 displot
seaborn.displot(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)
np.random.seed(666)
x = np.random.randn(1000)
sns.displot(x, kde=True, bins=30)
seaborn.kdeplot(data, data2=None, shade=False, vertical=False, kernel='gau',
bw='scott', gridsize=100, cut=3, clip=None, legend=True, cumulative=False,
shade_lowest=True, cbar=False, cbar_ax=None, cbar_kws=None, ax=None, **kwargs)
mean, cov = [0, 2], [(1, .5), (.5, 1)]
#这是一个多元正态分布
x, y = np.random.multivariate_normal(mean, cov, size=50).T
sns.kdeplot(x)
绘制双变量核密度图 (1)
sns.kdeplot(x,y,shade=True,shade_lowest=False,cbar=True,color='r')
绘制双变量核密度图 (2):二色二元密度图,使用大名鼎鼎的鸢尾花数据集
setosa = iris.loc[iris.species == "setosa"]
virginica = iris.loc[iris.species == "virginica"]
sns.kdeplot(setosa.sepal_width, setosa.sepal_length,cmap="Reds",
shade=True, shade_lowest=False)
sns.kdeplot(virginica.sepal_width, virginica.sepal_length,cmap="Blues",
shade=True, shade_lowest=False)
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)
sns.jointplot(x="total_bill", y="tip", data=tips,height=5)
3、当数据量比较大时,散点图的点容易堆叠在一起,不易分辨,我们可以指定参数 kind 为 ‘hex’ , 用颜色深度来表示数据的密度
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
mean, cov = [0, 1], [(1, 0.5), (0.5, 1)]
x, y = np.random.multivariate_normal(mean, cov, 1000).T
with sns.axes_style('white'):
sns.jointplot(x=x, y=y, kind='hex', color='k')
多变量数据,查看两两之间的关系
seaborn.pairplot(data, hue=None, hue_order=None, palette=None, vars=None,
x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None,
height=2.5, aspect=1, dropna=True, plot_kws=None, diag_kws=None,
grid_kws=None, size=None)
读取 鸢尾花 的数据集,其有四个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,查看两两之间的数据关系
iris = pd.read_csv(r'../input/seaborn-data/iris.csv')
iris.head()
sns.pairplot(iris)
sns.pairplot(iris, hue="species", markers=["o", "s", "D"])