目錄
1 熱力圖
1.1 簡介
1.2 文法
2 算例1(Python代碼實作)
2.1 算例
2.2 Python代碼
2.3 運作結果
3 算例2(Python代碼實作)
4 算例3(Python代碼實作)
4.1 算例
4.2 Python代碼
4.3 運作結果
5 相關性分析(皮爾遜,肯德爾,斯皮爾曼) (Matlab代碼實作)
1 熱力圖
1.1 簡介
利用熱力圖可以看資料表裡多個特征兩兩的相似度。
seaborn.heatmap()熱力圖,常用于展示一組變量的相關系數矩陣,列聯表的資料分布,通過熱力圖我們可以直覺地看到所給數值大小的差異狀況。
熱力圖,又名相關系數圖。根據熱力圖中不同方塊顔色對應的相關系數的大小,可以判斷出變量之間相關性的大小。兩個變量之間相關系數的計算公式為:
公式中,ρ 表示相關系數,Cov表示協方差,E表示數學期望/均值
值得注意的是,該相關系數隻能度量出變量之間的線性相關關系;也就是說,相關系數越高,則變量間的線性相關程度越高。對于相關系數小的兩個變量,隻能說明變量間的線性相關程度弱,但不能說明變量之間不存在其它的相關關系,如曲線關系等。
1.2 文法
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)
========(1)熱力圖輸入資料參數=======
data:指定繪制熱力圖的資料集,根據data傳入的值畫出熱力圖,一般是二維矩陣
========(2)熱力圖矩陣塊顔色參數=======
vmin,vmax:用于指定圖例中最小值與最大值的顯示值
cmap:指定一個colormap對象,用于熱力圖的填充色
center:指定顔色中心值,通過該參數可以調整熱力圖的顔色深淺
robust:預設取值False;如果是False,且沒設定vmin和vmax的值,熱力圖的顔色映射範圍根據具有魯棒性的分位數設定,而不是用極值設定
========(3)熱力圖矩陣塊注釋參數============
annot:指定一個bool類型的值或與data參數形狀一樣的數組,如果為True,就在熱力圖的每個單元上顯示數值
fmt:指定單元格中資料的顯示格式
annot_kws:有關單元格中數值标簽的其他屬性描述,如顔色、大小等
=========(4)熱力圖矩陣塊之間間隔及間隔線參數==============
linewidths :指定每個單元格的邊框寬度
linecolor:指定每個單元格的邊框顔色
=========(5)熱力圖顔色刻度條參數==============
cbar:bool類型參數,是否用顔色條作為圖例,預設為True
square:bool類型參數,是否使熱力圖的每個單元格為正方形,預設為False
cbar_kws:有關顔色條的其他屬性描述
========(6)坐标軸=============
xticklabels,yticklabels:指定熱力圖x軸和y軸的刻度标簽,如果為True,則分别以資料框的變量名和行名稱作為刻度标簽
mask:用于突出顯示某些資料
ax:用于指定子圖的位置
2 算例1(Python代碼實作)
2.1 算例
本算例來源于2022華夏杯大學生就業分析。
2.2 Python代碼
'''=========導入相關庫============='''
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #圖檔顯示中文
plt.rcParams['axes.unicode_minus'] =False #減号unicode編碼
#=====讀取資料和資料預處理=============
shuju=pd.read_csv('資料.csv')
print(shuju)
shuju.isnull().sum() #看下有沒有缺失值:
print(shuju)
shuju.describe() #檢視資料描述
#=======繪制熱圖===============
plt.figure(figsize=(25,20))
sns.heatmap(shuju.corr() , annot=True) #shuju.corr() :計算各變量之間的相關系數
# 設定刻度字型大小
plt.xticks(fontsize=9)
plt.yticks(fontsize=9)
plt.show()
2.3 運作結果
相關性分析熱力圖(Python&Matlab代碼實作)
3 算例2(Python代碼實作)
下面這篇文章寫得很棒,值得學習:
資料可視化之熱力圖&相關系數圖(原理+Python代碼)
4 算例3(Python代碼實作)
4.1 算例
本題算例來源于2022華數杯比賽。
4.2 Python代碼
'''======導入第三方庫========'''
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定預設字型
plt.rcParams['axes.unicode_minus'] = False # 解決儲存圖像是負号'-'顯示為方塊的問題,負号正常顯示
'''=======讀取資料==========='''
data=pd.read_csv('熱圖分析.csv', encoding='gbk')
data.head()
corr = data.corr() # shuju.corr() :計算各變量之間的相關系數,corr(method='pearson')預設方法選擇person相關性,'spearman'秩相關。如果你想選擇其它方法,請修改meathod參數。這裡我們就用皮爾遜進行示範。
'''=====熱圖可視化============'''
plt.subplots(figsize=(9, 9)) # 設定畫面大小
# annot=True,是顯式熱力圖上的數值;vmax是顯示最大值;xticklabels、yticklabels軸标簽顯示;square=True,将圖變成一個正方形,預設是一個矩形;cmap="Blues"是一種模式,就是圖顔色配置。
# mask:控制某個矩陣塊是否顯示出來,預設值是None,如果是布爾型的DataFrame,則将DataFrame裡True的位置用白色覆寫掉
sns.heatmap(corr, annot=True, vmax=1, vmin=0, xticklabels=True, yticklabels=True, square=True, cmap="YlGnBu",
linewidths=0.05, linecolor='y') # mask=t < 0.8等價于mask=(t < 0.8)
plt.title('變量相關系數 - 熱圖\n', fontsize=18) # 添加圖表标題“變量相關系數 - 熱圖”,fontsize=18 字型大小 可省略
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()