sns.regplot 和 sns.distplot 这两个图形的使用场景。

sns.regplot 用来比较两个变量的关系,是否符合线性回归。一般用来比较特征变量和标签变量上。sns.distplot 是直方图和核密度图(sns.kdeplot)的结合。用来看单个连续型变量的分布。

顺便说下直方图和条形图区别:

  • 直方图:先分箱,然后计算每个分箱频数的数据分布。直方图一般用于数字特征(连续型);
  • 条形图:一般用于类别特征,条形图有间距,直方图没有。

先用小费数据集画出图形。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 导入包
import seaborn as sns
from pandas import Series,DataFrame
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

# 拿到小费数据集
tips = sns.load_dataset('tips')

# 数据介绍: total_bill列为消费总金额;tip列为小费金额;sex列为顾客性别;smoker列为顾客是否抽烟;day列为消费的星期;time列为聚餐的时间段;size列为聚餐人数

# 查看前5行数据
tips.head()

image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
plt.figure(figsize=(14, 4))  # 指定绘图对象宽度和高度


ax=plt.subplot(1,3,1)
sns.regplot(x='total_bill', y='tip', data=tips, ax=ax,
scatter_kws={'marker':'.','s':3,'alpha':0.3},
line_kws={'color':'g'});
plt.xlabel('total_bill')
plt.ylabel('tip')

ax=plt.subplot(1,3,2)
sns.regplot(x='total_bill', y='size', data=tips, ax=ax,
scatter_kws={'marker':'.','s':3,'alpha':0.3},
line_kws={'color':'k'});
plt.xlabel('total_bill')
plt.ylabel('size')

ax=plt.subplot(1,3,3)
sns.distplot(tips['total_bill'].dropna())
plt.xlabel('total_bill')

plt.show()

output_2_0.png

图一是两个连续型变量比较。total_bill 直接拟合成一条直线,tip 是散点图。但就这个例子图形来看,这两个数据集有一定相关性,但相关性不强。

图二是一个连续型变量和一个分类变量关系比较。按照例子看基本是不相关的。

图三是直方图 + 核密度曲线。用来看单个变量的分布情况。

sns.regplot 和 sns.distplot 可以同时用,同时查看特征分布以及特征和变量关系。