【matplotlib 实战】--热力图
热力图,是一种通过对色块着色来显示数据的统计图表。
它通过使用颜色编码来表示数据的值,并在二维平面上呈现出来。
热力图通常用于显示大量数据点的密度、热点区域和趋势。
绘图时,一般较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示,等等。
热力图适合用于查看总体的情况、发现异常值、显示多个变量之间的差异,以及检测它们之间是否存在任何相关性。
1. 主要元素
热力图的主要元素如下:
- 矩形块:每个矩形块都有一个对应的位置。表示某种属性、频率、密度等。
- 颜色映射:通常使用渐变色带来表示数值的大小或密度。常见的颜色映射包括从冷色调(如蓝色)到热色调(如红色)的渐变,表示数值从低到高的变化。
- 热力密度:通过颜色的深浅来表示数据的密度或频率。较浅的颜色表示较低的密度或频率,而较深的颜色表示较高的密度或频率。
- 坐标轴:热力图通常在二维平面上显示,因此会有两个坐标轴,分别表示水平和垂直方向上的位置。

2. 适用的场景
热力图适用于以下分析场景:
- 数据密度分析:显示数据点的密度分布情况。它可以帮助用户观察数据的聚集区域和稀疏区域,从而揭示数据的分布模式和趋势。
- 热点区域识别:识别数据中的热点区域,即数据密度较高的区域。对于发现热门地区、热门产品或热门事件等具有重要意义。
- 趋势分析:通过观察颜色的变化,可以分析数据在不同区域或时间段的变化趋势。
- 空间数据分析:在地理信息系统(GIS)和位置数据分析中,可以显示地理空间上的数据分布和密度,帮助用户理解地理区域的特征和差异。
- 网站流量分析:显示用户在网页上的点击热度和浏览热度。这有助于优化网站布局、改进用户体验和提高转化率。
3. 不适用的场景
热力图在以下分析场景中可能不适用:
- 无序数据:对于无序的数据,热力图可能无法提供有意义的分析结果。
- 数据缺失:如果数据中存在大量缺失值或空白区域,可能无法准确地反映数据的密度和分布情况。
- 多个并行路径:通常用于展示单一维度的数据分布情况。如果需要同时比较多个维度或路径的数据,热力图可能不是最合适的选择。
4. 分析实战
本次分析今年上半年南京主要的几个区二手房的成交数量情况。
4.1. 数据来源
数据来自链家网南京地区的二手房成交的页面。
整理好的数据可以从下面的地址下载:
https://databook.top/lianjia/nj
各个区的二手房交易数据已经整理成csv格式。
import os
df_dict = {}
#数据解压的地址
fp = "d:/share/data/南京二手房交易"
for f in os.listdir(fp):
df = pd.read_csv(os.path.join(fp, f))
df_dict[f] = df
df_dict #合并所有区的数据
4.2. 数据清理
清理数据的主要几个步骤:
- 把
dealDate列转换为 日期(datetime)格式 - 按周统计的交易数量
- 统计结果保存到新的字典中(
df_stat),取日期最近的10条
df_stat = {}
for k, df in df_dict.items():
df["dealDate"] = pd.to_datetime(df["dealDate"])
# 最近10周的交易量
week_sum = df.resample("W", on="dealDate").name.count()
week_sum = week_sum.sort_index(ascending=False)
df_stat[k.replace(".csv", "")] = week_sum.head(10)
df_stat
4.3. 分析结果可视化
更加各个区的成交数量绘制最近10周的交易热力图。
x_labels = []
y_labels = df_stat.keys() # Y周的标签
data = []
for _, v in df_stat.items():
if len(x_labels) == 0: # X轴的日期标签
x_labels = v.index.strftime("%Y-%m-%d").tolist()
x_labels.reverse()
v = v.sort_index()
data.append(v.tolist())
plt.xticks(ticks=np.arange(len(x_labels)),
labels=x_labels,
rotation=45)
plt.yticks(ticks=np.arange(len(y_labels)),
labels=y_labels)
plt.imshow(data, cmap=plt.cm.hot_r)
plt.colorbar()
plt.show()

从热力图中可以看出,江宁区和浦口区的成交数量明显多于其他区,尤其是江宁区。
其次是鼓楼区和秦淮区稍好一些(可能和这2个区学区房比较多有关),而溧水区和六合区明显交易量不行。
【matplotlib 实战】--热力图的更多相关文章
- (转)matplotlib实战
原文:https://www.cnblogs.com/ws0751/p/8361330.html https://www.cnblogs.com/ws0751/p/8313017.html---mat ...
- matplotlib实战
plt.imshow(face_image.mean(axis=2),cmap='gray') 图片灰度处理¶ size = (m,n,3) 图片的一般形式就是这样的 rgb 0-255 jpg图 ...
- matplotlib绘制热力图
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/jin_tmac/article/deta ...
- python学习之matplotlib实战2
import numpy as np import matplotlib.pyplot as plt def main(): #scatter fig = plt.figure() ax = fig. ...
- python学习之matplotlib实战
import numpy as np def main(): # print("hello") # line import matplotlib.pyplot as plt x = ...
- pandas补充(其二)与matplotlib补充
今日内容概要 pandas补充知识(2) matplotlib补充知识 今日内容详细 pandas补充 数据汇总 # 数据透视表 pd.pivot_table(data,values-None,ind ...
- matplotlib基本使用(矩形图、饼图、热力图、3D图)
使用matplotlib画简单的图形: #-*- coding:utf-8 -*- from numpy.random import randn import matplotlib.pyplot as ...
- 第一章:AI人工智能 の 数据预处理编程实战 Numpy, Pandas, Matplotlib, Scikit-Learn
本课主题 数据中 Independent 变量和 Dependent 变量 Python 数据预处理的三大神器:Numpy.Pandas.Matplotlib Scikit-Learn 的机器学习实战 ...
- 《机器学习实战-KNN》—如何在cmd命令提示符下运行numpy和matplotlib
问题背景:好吧,文章标题是瞎取得.平常用cmd运行python代码问题不大,我在学习<机器学习实战>这本书时,发现cmd无法运行import numpy as np以及import mat ...
- 数据可视化基础专题(十三):Matplotlib 基础(五)常用图表(三)环形图、热力图、直方图
环形图 环形图其实是另一种饼图,使用的还是上面的 pie() 这个方法,这里只需要设置一下参数 wedgeprops 即可. 例子一: import matplotlib.pyplot as plt ...
随机推荐
- [ESP] 使用Ayla API Reference配网和连Ayla云
示例用的文档及链接 US Dev Dashboard(查看oem-id和oem-key) https://dashboard-dev.aylanetworks.com/ Ayla API Refere ...
- ZIM|一站式接入,打通 RTC 和 IM 组合拳
从用户信息.用户心跳到用户间私人与聊天室通信,IM 一直是互联网世界中不可或缺的基础建设之一.早在连麦和直播诞生之前,IM 就已是在通讯领域内服役多年的老兵,而随着线上音视频的兴起,IM 不仅没有没落 ...
- PTA 21级数据结构与算法实验7—查找表
目录 7-1 电话聊天狂人 7-2 两个有序序列的中位数 7-3 词频统计 7-4 集合相似度 7-5 悄悄关注 7-6 单身狗 7-7 词典 7-8 这是二叉搜索树吗? 7-9 二叉搜索树 7-1 ...
- pip install mysqlclient命令安装mysqlclient失败的解决办法
错误情况: 解决方法: 到这个地址下载自己版本对应的资源 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 如下图: 我这里首先下载了 ...
- UE构建基础和实践:五、CI/CD平台自动化打包
序言 使用CI/CD平台构建(这里使用蓝盾平台)主要是通过平台脚本运行上一章的py脚本并传递参数(即把py中的参数开放给配置平台脚本配置). Build.py 重构 我们需要在py脚本里面解析和设置参 ...
- GoRedisLock:Golang保障数据一致性的分布式锁解决方案
在现代分布式系统中,多个节点之间共享资源是常见的需求.然而,并发访问共享资源可能导致数据不一致性和竞争条件.为了解决这些问题,我们需要引入分布式锁.GoRedisLock是一个出色的分布式锁库,它结合 ...
- C# 使用openxml解析PPTX中的文本内容
前言 本文讨论的仅针对微软Office 2007以后的(OOXML定义)PowerPoint文档,Office 2007以前的用二进制格式定义的(ppt格式)文档不在本文讨论范围. 一.依赖类库 本文 ...
- CAJViewer卡的解决办法
在做毕业设计时,使用了CAJViewer7.2版本的阅读器,使用起来非常卡,翻页总是不流畅,体验感极差. 最后实在受不了了,去百度了一下,在贴吧中看到了疑似解决方案,尝试了一下,真的不卡了.所以特此写 ...
- GC的前置工作,聊聊GC是如何快速枚举根节点的
本文已收录至GitHub,推荐阅读 Java随想录 微信公众号:Java随想录 原创不易,注重版权.转载请注明原作者和原文链接 目录 什么是根节点枚举 根节点枚举存在的问题 如何解决根节点枚举的问题 ...
- Pytest+Jenkins 学习笔记
Pytest+Jenkins 学习笔记 在软件测试工作中,单元测试通常是由开发人员执行的.针对最小单元粒度的组件测试,在完成了单元粒度的测试任务之后,通常就需要交由专职的测试人员将这些单元级的组件放到 ...