python绘制房源excell热力图,使用热力图分析房源位置分布情况
时间: 2024-03-10 21:50:03 浏览: 157
Python绘制热力图示例
4星 · 用户满意度95%
要使用热力图分析房源位置分布情况,你需要将房源的地理位置信息转换为经纬度坐标,并将其绘制在地图上。可以使用Python中的geopy和folium库来完成。
首先,你需要加载Excel文件,可以使用pandas库的read_excel()方法来完成。
```python
import pandas as pd
df = pd.read_excel('房源.xlsx')
```
接下来,你需要将房源的地址信息转换为经纬度坐标。可以使用geopy库的Nominatim()方法来完成。
```python
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="my_app")
df['location'] = df['地址'].apply(geolocator.geocode)
df['point'] = df['location'].apply(lambda loc: tuple(loc.point) if loc else None)
```
其中,'地址'是Excel表格中的列名。geocode()方法将地址转换为经纬度坐标,point属性保存了转换后的坐标信息。
接下来,你可以使用folium库创建地图,并在地图上添加热力图。可以使用folium.plugins库中的HeatMap()方法来绘制热力图。
```python
import folium
from folium.plugins import HeatMap
map = folium.Map(location=[df['point'][0][0], df['point'][0][1]], zoom_start=13)
heat_data = [[point[0], point[1]] for point in df['point'] if point is not None]
HeatMap(heat_data).add_to(map)
map
```
这里使用了第一条房源的经纬度坐标作为地图的中心点,并设置了缩放级别为13。heat_data保存了所有有效的经纬度坐标信息,使用HeatMap()方法将其绘制为热力图,并添加到地图中。
完整代码如下:
```python
import pandas as pd
from geopy.geocoders import Nominatim
import folium
from folium.plugins import HeatMap
df = pd.read_excel('房源.xlsx')
geolocator = Nominatim(user_agent="my_app")
df['location'] = df['地址'].apply(geolocator.geocode)
df['point'] = df['location'].apply(lambda loc: tuple(loc.point) if loc else None)
map = folium.Map(location=[df['point'][0][0], df['point'][0][1]], zoom_start=13)
heat_data = [[point[0], point[1]] for point in df['point'] if point is not None]
HeatMap(heat_data).add_to(map)
map
```
注意:在代码中,我假设了Excel表格中有'地址'这个属性。你需要根据自己的数据调整代码。另外,geopy库的geocode()方法是调用了Nominatim API,它的使用可能会受到一些限制,需要注意。
阅读全文