-
seaborn.heatmap的函数定义形式
seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)
np.random.rand()函数返回一个或一组服从0~1均匀分布的随机样本值,随机样本取值范围是[0,1),不包括1,随机创建10行12列的数组,定义一个子图宽高为9和6
import numpy as np;
import seaborn as sns;
import matplotlib.pyplot as plt
uniform_data = np.random.rand(10, 12)
f, ax = plt.subplots(figsize=(9, 6))
ax = sns.heatmap(uniform_data)
plt.show()
应用到热力图中,得到如下图所示:
现在在上图的基础上改变一下色彩图的上下界:
ax = sns.heatmap(uniform_data, vmin=0, vmax=1)
-
使用发散色图绘制以0为中心的数据的热力图
np.random.randn()函数返回一个或一组服从标准正态分布的随机样本值
import numpy as np;
import seaborn as sns;
import matplotlib.pyplot as plt
uniform_data = np.random.randn(10, 12)
f, ax = plt.subplots(figsize=(9, 6))
ax = sns.heatmap(uniform_data, center=0)
plt.show()
使用sns.load_dataset("flights")自带的数据集,数据集的部分截图如下,共144行数据:
import seaborn as sns
data = sns.load_dataset('flights')
print(data)
year month passengers
0 1949 Jan 112
1 1949 Feb 118
2 1949 Mar 132
3 1949 Apr 129
4 1949 May 121
.. ... ... ...
139 1960 Aug 606
140 1960 Sep 508
141 1960 Oct 461
142 1960 Nov 390
143 1960 Dec 432
[144 rows x 3 columns]
接着使用了一个特别高效的函数pivot(),该函数有三个参数(index,columns,values),第一个参数index是指新表的索引,第二个参数columns是新表的列名,第三个参数values是指新表中的值,看效果就比较明确了
import seaborn as sns
data = sns.load_dataset('flights')
flights = data.pivot("month", "year", "passengers")
print(flights)
year 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960
month
Jan 112 115 145 171 196 204 242 284 315 340 360 417
Feb 118 126 150 180 196 188 233 277 301 318 342 391
Mar 132 141 178 193 236 235 267 317 356 362 406 419
Apr 129 135 163 181 235 227 269 313 348 348 396 461
May 121 125 172 183 229 234 270 318 355 363 420 472
Jun 135 149 178 218 243 264 315 374 422 435 472 535
Jul 148 170 199 230 264 302 364 413 465 491 548 622
Aug 148 170 199 242 272 293 347 405 467 505 559 606
Sep 136 158 184 209 237 259 312 355 404 404 463 508
Oct 119 133 162 191 211 229 274 306 347 359 407 461
Nov 104 114 146 172 180 203 237 271 305 310 362 390
Dec 118 140 166 194 201 229 278 306 336 337 405 432
显示一下热力图
使用整型格式的数值为每个单元格注释
ax = sns.heatmap(flights, annot=True, fmt="d")
为每个单元格之间添加行
ax = sns.heatmap(flights, linewidths=.5)
#heatmap函数中的参数linewidths是指划分每个单元格的行的宽度
换一个不同的色彩图,heatmap函数中的参数cmap是指色彩颜色的选择,可选的颜色还有很多,比如:Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r...其中末尾加r是颜色取反
ax = sns.heatmap(flights, cmap="RdPu")
将色彩图特定值设为中心
ax = sns.heatmap(flights, center=flights.loc["January", 1955])
-
各变量间相关性分析
相关性分析就是对整个数据集中各变量之间的关系进行分析,判断变量间相互关系的密切程度或因果关系。两个变量间的相关程度可以用相关性系数来表示,记作r。r的取值范围为[-1,1]
一个变量随着另一个变量的增长而增长—>正相关[0,+1]
一个变量随着另一个变量的增长而减少—>负相关[-1,0]
两个变量间的关系越强,相关系数的绝对值越大,完全相关时,绝对值为1
Seaborn中的heatmap函数可以绘制各变量间的相关系数热力图,将各个变量间的相关程度用颜色不同的方格来表示,默认颜色越浅表示的相关程度越高
#corr函数用于计算各变量间的相关系数
corrmat = train.corr()
#对DataFrame计算并返回相关系数矩阵,命名为corrmat
f, ax = plt.subplots(figsize=(12, 9))
#Subplots函数用于设置子图,figsize参数可设置画布大小
sns.heatmap(corrmat,square=True,annot=True,center=None,fmt='.2f',linewidths=0.05,annot_kws={'size':6})
#第一个参数为待分析的二维数组
#square=True横纵坐标指标相等,显示为正方形,每一个表示相关性系数的小格为正方形
#annot=True每个小各中填写对应变量间相关性系数值
#center=None,center参数可以设置图例中的均值数据。调整图像的整体深浅
#fmt='.2f',保留两位小数
#linewidths=0.05,设置每个小方格之间分割线的宽度
#annot_kws={'size':6},设置热力图矩阵上数字的大小颜色等,可以用键值对表示
plt.show()
-
多变量散点图分析
取热力图中与price相关程度较高的变量,绘制多变量散点图,观察各变量与房价的相关关系
#首先设置多变量散点图中的变量,记录为变量名列表,并将列表设置为col
col=['SalePrice','TotalBsmtSF','GrLivArea','GarageArea','OverallQual']
#然后用Seaborn绘图库中的pairplot绘制多变量散点图
sns.pairplot(train[col],size=1.5)
plt.show()
分析图中红框部分呈现明显的正相关关系