数据可视化之热力图相关系数图(原理+Python代码)
目录
- 一、原理介绍
- 二、代码实现
- 三、结果解释
一、原理介绍
热力图,又名相关系数图。根据热力图中不同方块颜色对应的相关系数的大小,可以判断出变量之间相关性的大小。两个变量之间相关系数的计算公式为:
ρX1X2=Cov(X1,X2)DX1,DX2=EX1X2−EX1∗EX2DX1∗DX2\rho _{_{X_{1}X_{2}}}=\frac{Cov(X_{1},X_{2})}{\sqrt{DX_{1},DX_{2} }}=\frac{EX_{1}X_{2}-EX_{1}\ast EX_{2}}{\sqrt{DX_{1}\ast DX_{2} }}ρX1X2=DX1,DX2Cov(X1,X2)=DX1∗DX2EX1X2−EX1∗EX2
公式中,ρ\rhoρ 表示相关系数,Cov表示协方差,E表示数学期望/均值
值得注意的是,该相关系数只能度量出变量之间的线性相关关系;也就是说,相关系数越高,则变量间的线性相关程度越高。对于相关系数小的两个变量,只能说明变量间的线性相关程度弱,但不能说明变量之间不存在其它的相关关系,如曲线关系等。
二、代码实现
数据来源于2016年的上市企业数据,通过绘制热力图,来探究上市企业各指标之间的相关性,进而探究自变量之间的多重共线性以及各变量与企业违约率之间的相关关系强弱。
以下是代码的实现过程:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings("ignore") #过滤掉警告的意思
from pyforest import *
data=pd.read_csv("F:/data/cor.csv",encoding='gbk')
data.head()
年份 | 证券简称 | 资产负债率 | 剔除预收款项后的资产负债率 | 长期资本负债率 | 长期资产适合率 | 权益乘数 | 流动负债权益比率 | 带息债务/全部投入资本 | 流动负债/负债合计 | 资本固定化比率 | 期望违约频率EDF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2016 | 珠江实业 | 0.712906 | 0.635345 | 0.478982 | 0.504892 | 0.901718 | 0.491299 | 0.391437 | 0.148517 | 0.475540 | 0.000000 |
1 | 2016 | 珠江控股 | 0.605648 | 0.490110 | 0.570861 | 0.492015 | 0.130525 | 0.000000 | 0.445324 | 0.641538 | 0.720305 | 0.428899 |
2 | 2016 | 中洲控股 | 0.670881 | 0.615495 | 0.530650 | 0.499621 | 0.835539 | 0.463341 | 0.355513 | 0.338676 | 0.484446 | 0.991604 |
3 | 2016 | 中天金融 | 0.678323 | 0.588974 | 0.445639 | 0.495032 | 0.851713 | 0.492647 | 0.407492 | 0.093949 | 0.509239 | 0.999601 |
4 | 2016 | 中体产业 | 0.800410 | 0.783033 | 0.901929 | 0.502632 | 0.955745 | 0.508000 | 0.093838 | 0.571239 | 0.462344 | 0.792590 |
#图片显示中文
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] =False #减号unicode编码
data.drop(['证券简称','年份'], axis=1, inplace=True) #删除无关的列
#计算各变量之间的相关系数
corr = data.corr()
corr
资产负债率 | 剔除预收款项后的资产负债率 | 长期资本负债率 | 长期资产适合率 | 权益乘数 | 流动负债权益比率 | 带息债务/全部投入资本 | 流动负债/负债合计 | 资本固定化比率 | 期望违约频率EDF | |
---|---|---|---|---|---|---|---|---|---|---|
资产负债率 | 1.000000 | 0.594527 | 0.492963 | -0.160995 | 0.723664 | 0.658646 | -0.857474 | 0.320706 | -0.284634 | -0.091423 |
剔除预收款项后的资产负债率 | 0.594527 | 1.000000 | 0.724546 | -0.099318 | 0.540639 | 0.492140 | -0.554039 | 0.171270 | -0.265259 | 0.068577 |
长期资本负债率 | 0.492963 | 0.724546 | 1.000000 | -0.091338 | 0.450542 | 0.375839 | -0.524955 | 0.300627 | -0.198362 | 0.033209 |
长期资产适合率 | -0.160995 | -0.099318 | -0.091338 | 1.000000 | -0.049872 | -0.028452 | 0.157157 | 0.009742 | -0.162374 | 0.155095 |
权益乘数 | 0.723664 | 0.540639 | 0.450542 | -0.049872 | 1.000000 | 0.951933 | -0.651767 | 0.079052 | -0.535984 | 0.007980 |
流动负债权益比率 | 0.658646 | 0.492140 | 0.375839 | -0.028452 | 0.951933 | 1.000000 | -0.543147 | -0.106139 | -0.522320 | 0.011466 |
带息债务/全部投入资本 | -0.857474 | -0.554039 | -0.524955 | 0.157157 | -0.651767 | -0.543147 | 1.000000 | -0.595016 | 0.310521 | 0.066397 |
流动负债/负债合计 | 0.320706 | 0.171270 | 0.300627 | 0.009742 | 0.079052 | -0.106139 | -0.595016 | 1.000000 | -0.105199 | -0.064886 |
资本固定化比率 | -0.284634 | -0.265259 | -0.198362 | -0.162374 | -0.535984 | -0.522320 | 0.310521 | -0.105199 | 1.000000 | -0.080153 |
期望违约频率EDF | -0.091423 | 0.068577 | 0.033209 | 0.155095 | 0.007980 | 0.011466 | 0.066397 | -0.064886 | -0.080153 | 1.000000 |
ax = plt.subplots(figsize=(20, 16))#调整画布大小
ax = sns.heatmap(corr, vmax=.8, square=True, annot=True)#画热力图 annot=True 表示显示系数
# 设置刻度字体大小
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
三、结果解释
热力图右侧的刻度展示了不同相关系数对应的颜色深浅。从图中可以看出,
权益乘数
和流动负债权益比率
之间的相关性较高,为0.95,即存在很强的多重共线性。在进行特征工程时可以考虑剔除二者中的一个变量,以免导致因多重共线性造成的过拟合。从热力图的最后一列或最后一行可以看出,
长期资产适合率
和期望违约频率
的相关系数相对最高,为0.16。因此,在进行违约风险评估建模时,可以考虑保留长期资产适合率
这一变量。
相关阅读
- 数据可视化之树形图(原理+Python代码)
- 数据可视化之小提琴图(原理+Python代码)
数据可视化之热力图相关系数图(原理+Python代码)相关推荐
- 数据可视化之饼状图(原理+Python代码)
数据来源于Kaggle数据集,链接:https://www.kaggle.com/Cornell-University/arxiv 目录 00.前言 一.原理介绍 二.代码实现 三.结果解释 00.前 ...
- python雷达图数据_Python怎么画雷达图?Matplotlib数据可视化008:雷达图\极坐标图...
系列文章链接:[Python菜鸟进阶大神]Matplotlib数据可视化001:基础API汇总&散点图mp.weixin.qq.com [Python菜鸟进阶大神]Matplotlib数据可 ...
- python画厢式图_Python数据可视化:箱线图多种库画法
概念 箱线图通过数据的四分位数来展示数据的分布情况.例如:数据的中心位置,数据间的离散程度,是否有异常值等. 把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q ...
- python 数据可视化———绘制饼状图(bar)
python 数据可视化---绘制饼状图(bar) 从入门到入门,快速上手饼状图 前言 Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API. Pyplot 包含 ...
- Echarts数据可视化series-heatmap热力图,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...
- 27【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏范例 - 监控指挥中心
目录 效果展示 1. 效果动图 2. 多种主题效果 一. 确定需求方案 1. 屏幕分辨率 2. 部署方式 二. 整体架构设计 三. 编码实现 (基于篇幅及可读性考虑,此处展示部分关键代码) 1. 前端 ...
- 视频教程-Python数据可视化库:Matplotlib视频课程-Python
Python数据可视化库:Matplotlib视频课程 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师, ...
- 两维天线阵列波束成型原理Python代码
在讲解两维天线阵列之前,需要了解一维天线阵列波束成形原理,只有了解了一维天线阵列,才能弄明白二维,好了,我们先开始科普一维天线阵列原理. 一维天线阵列原理: 如下图,所示,如果在theda确定的情况下 ...
- OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...
OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式 以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列 ...
- python支持向量机分类器怎么用_可视化SVM分类器开源实现的python代码
如下的Python代码是可视化SVM分类器开源实现的python代码.这是个小巧又简单,却不一定满足大家高效要求的具有可视化功能的SVM分类器源码.是采用标准python写成的,但如果需要作图功能,则 ...
最新文章
- 无屏幕和键盘配置树莓派WiFi和SSH
- 在ASP.NET应用程序中捕捉身份验证状态的变化
- mybatis的快速入门
- python绘制3d坐标轴_python – 尝试使用matplotlib更新3D图形坐标
- 完善获取数据库数据的写法
- 整理Java基础知识--Date Time2
- EMR 配置纪录(不断更新)
- 小白Linux入门之:终端复用器Tmux使用参考
- 福昕PDF阅读器 Foxit PDF Reader 中文绿色版
- Word怎么转Excel表格
- 线下AWD平台搭建以及一些相关问题解决
- Git 客户端的安装与使用
- CF1463F Max Correct Set(取小样法+状压 DP)
- 10 个可以副业赚钱的网站,总有一个适合你
- 以古为新 洒脱自然 ——魏沁的书法艺术
- 带团队,不要轻易放弃任何一个队友
- 批量数据 导入数据库
- MAC 自定义通知提醒 (定时提醒喝水)
- 一文看懂5G网络(接入网+承载网+核心网)
- 【NOWCODER】- Python:字典(一)