You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Folium生成以房价为权重的热力图而非默认频率热力图

解决方案:用房价作为Folium热力图的权重值

嘿,你完全不用靠复制行来模拟权重!Folium的HeatMap插件本身就支持直接传入权重值,这才是高效且正确的做法。

核心原理

HeatMap接受的热力数据列表里,每个元素可以是**[纬度, 经度, 权重值]**的三元组,第三个值就会被用作该点的热力权重(数值越大,热力强度越高,颜色越深),完全不需要通过重复行来模拟频率。

修改后的完整代码

import pandas as pd
from folium import Map
from folium.plugins import HeatMap

# 你的示例数据
data = pd.DataFrame({
    "house_id" : [1, 2, 3, 4], 
    "latitude": [55.83, 55.79, 55.86, 55.85], 
    "longitude": [12.05, 12.10, 12.07, 12.09], 
    "price": [2000, 2100, 1500, 4500]
})

# 生成包含权重的热力数据:每个元素是[纬度, 经度, 房价]
heat_data = [[row['latitude'], row['longitude'], row['price']] for _, row in data.iterrows()]

# 创建基础地图
m = Map(location=[55.838913, 12.055415], zoom_start=13)

# 添加热力图,自动使用第三个值作为权重
HeatMap(heat_data).add_to(m)

# 显示地图(Jupyter环境直接运行m即可,本地环境可保存为HTML文件)
# m.save('house_price_heatmap.html')

额外优化建议

  • 如果房价数值差异过大,可以对价格做归一化处理(比如(price - data['price'].min())/(data['price'].max() - data['price'].min())),让热力图的对比度更合理;
  • 可以通过HeatMap的参数调整热力效果:比如radius控制点的影响范围,blur控制模糊程度,max_val设置最大权重对应的热力上限,示例:
    HeatMap(heat_data, radius=15, blur=10, max_val=data['price'].max()).add_to(m)
    

这个方法不仅计算效率拉满,还能精准反映每个房源的房价权重,完全避免了复制行带来的内存和性能浪费,大数据集下优势特别明显!

内容的提问来源于stack exchange,提问作者Dennis Hansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 12:12:28