python数据可视化——直方图、热力图和缺失值可视化

一、绘制直方图

首先读入数据

def read_data():
    path = '../data/forCodeF-2.csv'
    data = pd.read_csv(path,encoding='gbk')
    return data

然后调用matplotlib.pyplot.hist函数绘制各维特征的分布直方图。

import matplotlib.pyplot as plt  # 可视化
def draw(data):
    data.hist(figsize=(16,14))
    plt.savefig("Plots.jpg",dpi=300, pad_inches = 0)
    plt.show()
data = read_data()
draw(data)

在这里插入图片描述

二、绘制热力图

利用热力图可以看数据表里多个特征两两的相似度。
相似度由皮尔逊相关系数度量。
两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商::
ρ X , Y = c o v ( X , Y ) σ X σ Y = E [ ( X − μ X ) ( Y − μ Y ) ] σ X σ Y = E ( X Y ) − E ( X ) E ( Y ) E ( X 2 ) − E 2 ( X ) E ( Y 2 ) − E 2 ( Y ) \rho_{X,Y}=\frac{cov(X,Y)}{\sigma_X\sigma_Y}=\frac{E[(X-\mu_X)(Y-\mu_Y)]}{\sigma_X\sigma_Y}=\frac{E(XY)-E(X)E(Y)}{\sqrt{E(X^2)-E^2(X)}\sqrt{E(Y^2)-E^2(Y)}} ρX,Y=σXσYcov(X,Y)=σXσYE[(XμX)(YμY)]=E(X2)E2(X) E(Y2)E2(Y) E(XY)E(X)E(Y)
调用seaborn.heatmap绘制热力图:

def draw_heatmap(data):
    ylabels = data.columns.values.tolist()

    ss = StandardScaler()     # 归一化
    data = ss.fit_transform(data)

    df = pd.DataFrame(data)

    dfData = df.corr()
    plt.subplots(figsize=(15, 15)) # 设置画面大小
    sns.heatmap(dfData, annot=True, vmax=1, square=True,yticklabels=ylabels,xticklabels=ylabels, cmap="RdBu")
    plt.savefig('../img/thermodynamicDiagram.jpg')
    plt.show()

data = read_data()
draw_heatmap(data)

在这里插入图片描述
注意:sns.heatmap的输入需为DataFrame格式,所以需要用将np.narray形式的数据转为DataFrame格式。

使用cmap可以改变图的颜色,蓝色、粉红色·和红色等,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, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cividis, cividis_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, icefire, icefire_r, inferno, inferno_r, jet, jet_r, magma, magma_r, mako, mako_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, rocket, rocket_r, seismic, seismic_r, spring, spring_r, summer, summer_r, tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r, viridis, viridis_r, vlag, vlag_r, winter, winter_r

如果特征和标注正相关和负相关的代表意义相同,可以对数据取绝对值;或选择RdBu,使接近+1和-1的块颜色都深。
如果想对坐标轴进行翻转,可使用.invert_yaxis()函数。

三、绘制缺失值

missingno是一个可视化缺失值的库,方便使用,我们可以用pip install missingno 即可下载该库。

矩阵图

输入为DataFrame格式的数据。矩阵图中白线越多,代表缺失值越多。
如果使用时间序列数据,可以使用 freq 关键字参数指定周期性。

import missingno as msno
msno.matrix(data, labels=True)   # 矩阵图 

在这里插入图片描述

柱状图

利用柱状图/条形图可以更直观的看出每个变量缺失的比例和数量情况。还可以通过指定 log=True 变换到对数刻度。

msno.bar(data)                   # 柱状图

在这里插入图片描述

热力图

热力图表示两个特征之间的缺失相关性,即一个变量的存在或不存在如何强烈影响的另一个的存在。如果x和y的热度值是1,则代表当x缺失时,y也百分之百缺失。如果x和y的热度相关性为-1,说明x缺失的值,那么y没有缺失;而x没有缺失时,y为缺失。

msno.heatmap(data)               # 热力图

在这里插入图片描述
标记为 <1 或者 >-1的条目有一个接近exactingly负或者正的相关性,但仍然不完全完美。

树状图
msno.dendrogram(data)

树形图使用层次聚类算法通过它们的无效性相关性(根据二进制距离测量)将变量彼此相加。在树的每个步骤,基于哪个组合最小化剩余簇的距离来分割变量。变量集越单调,它们的总距离越接近零,并且它们的平均距离(y轴)越接近零。
在这里插入图片描述
label、height、sex和age是完整的数据,没有缺失值,所以他们的距离为0;相对于其他变量weight也是比较完整的,距离要比其他变量小,所以先把weight加进来。其他变量以此类推。

参考网址
https://blog.csdn.net/weixin_43172660/article/details/83793084
https://blog.csdn.net/Andy_shenzl/article/details/81633356
https://www.helplib.com/GitHub/article_137619

  • 32
    点赞
  • 262
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值