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')
tips.head()
|
![image.png](https://cdn.nlark.com/yuque/0/2020/png/613759/1604987097200-eeb58af9-fb83-473d-94ed-bdff9573b153.png#align=left&display=inline&height=164&margin=%5Bobject%20Object%5D&name=image.png&originHeight=164&originWidth=347&size=15197&status=done&style=none&width=347)
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](https://cdn.nlark.com/yuque/0/2020/png/613759/1604987117509-d892cdbd-4a82-4a32-9bd3-c1f4727567ac.png#align=left&display=inline&height=265&margin=%5Bobject%20Object%5D&name=output_2_0.png&originHeight=265&originWidth=829&size=31780&status=done&style=none&width=829)
图一是两个连续型变量比较。total_bill 直接拟合成一条直线,tip 是散点图。但就这个例子图形来看,这两个数据集有一定相关性,但相关性不强。
图二是一个连续型变量和一个分类变量关系比较。按照例子看基本是不相关的。
图三是直方图 + 核密度曲线。用来看单个变量的分布情况。
sns.regplot 和 sns.distplot 可以同时用,同时查看特征分布以及特征和变量关系。