首页 > 其他分享 >【matplotlib 实战】--热力图

【matplotlib 实战】--热力图

时间:2023-10-25 09:14:06浏览次数:43  
标签:实战 plt -- labels 力图 matplotlib df 密度 数据

热力图,是一种通过对色块着色来显示数据的统计图表。
它通过使用颜色编码来表示数据的值,并在二维平面上呈现出来。
热力图通常用于显示大量数据点的密度、热点区域和趋势。

绘图时,一般较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示,等等。

热力图适合用于查看总体的情况、发现异常值、显示多个变量之间的差异,以及检测它们之间是否存在任何相关性。

1. 主要元素

热力图的主要元素如下:

  1. 矩形块:每个矩形块都有一个对应的位置。表示某种属性、频率、密度等。
  2. 颜色映射:通常使用渐变色带来表示数值的大小或密度。常见的颜色映射包括从冷色调(如蓝色)到热色调(如红色)的渐变,表示数值从低到高的变化。
  3. 热力密度:通过颜色的深浅来表示数据的密度或频率。较浅的颜色表示较低的密度或频率,而较深的颜色表示较高的密度或频率。
  4. 坐标轴:热力图通常在二维平面上显示,因此会有两个坐标轴,分别表示水平和垂直方向上的位置。

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. 数据清理

清理数据的主要几个步骤:

  1. dealDate列转换为 日期(datetime)格式
  2. 按周统计的交易数量
  3. 统计结果保存到新的字典中(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()

image.png

从热力图中可以看出,江宁区浦口区的成交数量明显多于其他区,尤其是江宁区
其次是鼓楼区秦淮区稍好一些(可能和这2个区学区房比较多有关),而溧水区六合区明显交易量不行。

标签:实战,plt,--,labels,力图,matplotlib,df,密度,数据
From: https://www.cnblogs.com/wang_yb/p/17786291.html

相关文章

  • 面向对象学习笔记1
    面向对象学习笔记1今天终于开始学习面向对象了,b站大学真是太牛逼啦!浙大翁恺老师的课讲得很清楚,疯狂安利!【浙江大学】面向对象程序设计,教授:翁恺面向对象基本原理面向对象程序设计,object-oriented-programming(OOP),在这种方式的程序设计中,把每一个变量看作是一个对象,通过调......
  • c# File相关
    1. c#读写文件时文件正由另一进程使用,因此该进程无法访问该文件问题描述:c#读写文件时文件正由另一进程使用,因此该进程无法访问该文件,在IO处理上遇到了无法操作的问题使用IO流如下(1)FileStreamfs=File.OpenRead(url);StreamReadersr=newStreamReader((System.IO.......
  • 你是不是瞧不起力扣
    leetcode「10·24」程序员节编程竞赛计算子集给你三个整数\(n,k,m\)。定义\(S=\{i\mid1\lei\lenm+k,i\in\mathbbZ\}\)请返回一个下标从\(0\)开始、长度为\(m\)的数组answer,其中answer[i]表示符合下列条件集合\(T\)的个数。集合\(T\)是集合\(S\)的子集......
  • How To Use Traceroute and MTR to Diagnose Network Issues
    copyfrom: https://www.digitalocean.com/community/tutorials/how-to-use-traceroute-and-mtr-to-diagnose-network-issuesIntroductionAnimportantpartofadministeringserversismonitoringnetworkconnectivity.Thereareafewtoolsthataresimpletouse,......
  • java学习-二维数组&面向对象
    动态初始化格式数据类型[][]变量名=new数据类型[m][n]m表示这个二位数组可以存放多少个以为数组n表示里面的每个一维数组可以存放多少个元素比如int[][]arr=new[3][2]这个就代表里面有3个一维数组,每个一维数组可以存放2个元素存数据arr[0][0]=11arr[0][1]=......
  • 2023年值得使用的 Node.js 框架
    2023年值得使用的Node.js框架Hacker2022-05-2623,542阅读10分钟 专栏: 前端随记 Node.js是最受欢迎的JavaScript运行时,今天就来看看有哪些热门、值得使用的Node.js框架。1.Next.jsNext.js是一个用于生产环境的React应用框架,使用它可以快速上手开发R......
  • Grub2 内核启动参数总结
    Grub2内核启动参数总结部分参数biosdevname=0net.ifnames=0#注意这个配置会修改网卡的名字,比如之前是ens192#添加如上两个内容后就会变成eth0类似于CentOS6的命令特点.#注意修改了网卡名称会导致机器无法上网,需要通过控制台连接机器,并且修改#/etc/sysconfi......
  • 20231024学习总结
    Java抽象类在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式......
  • Python贝叶斯MCMC:Metropolis-Hastings、Gibbs抽样、分层模型、收敛性评估
     全文链接:https://tecdat.cn/?p=33961原文出处:拓端数据部落公众号在常规的马尔可夫链模型中,我们通常感兴趣的是找到一个平衡分布。MCMC则是反过来思考——我们将平衡分布固定为后验分布:并寻找一种转移核,使其收敛到该平衡分布。岛屿示例首先提供一个示例,以具体展示Metropo......
  • Slax Linux 获得增强的会话管理和启动参数选项
    Slax Linux 的创建者和维护者托马斯-马特吉切克(TomasMatejicek)在自己生日这天(生日快乐!)发布了其小巧便携的GNU/Linux发行版的新版本,带来了各种增强功能和错误修复。新发布的SlaxLinux版本(Debian基本版本为12.1,Slackware基本版本为15.0.2)在从可写设备运行发行版......