我正在使用jupyter绘制广州市各区成交房源分布地图,读取excel的地址为:df = pd.read_excel(r’data\广州房屋成交信息.xlsx’),已经知道该excel中没用含经度和纬度字段,只有"城区"ci
时间: 2024-09-26 22:06:55 浏览: 50
要使用Jupyter Notebook在Python中绘制广州市各区成交房源分布的地图,但数据中没有直接包含经纬度信息,通常需要两步操作:
1. **数据预处理**:
先确定如何从城区(`"城区"`列)信息中获取对应的地理位置。这可能涉及到查找地理编码API(如Google Maps API或Baidu Geocoding API),将城区名称转换为经纬度坐标。如果这些数据可用公开API访问,可以直接调用。
2. **地图可视化**:
使用地理空间分析库,如`geopandas`(基于`pandas`扩展),结合已有的经纬度数据,创建热力图或点状图来表示成交房源分布。
以下是基本的步骤概述:
```python
# 导入所需的库
import pandas as pd
import geopandas as gpd
from geopy.geocoders import Nominatim
import matplotlib.pyplot as plt
# 创建一个Geocoder实例
geolocator = Nominatim(user_agent="your_app_name")
# 读取Excel数据
df = pd.read_excel(r'data\广州房屋成交信息.xlsx')
# 假设有一个函数geocode_city()用于获取经纬度
def geocode_city(city):
location = geolocator.geocode(city)
if location:
return (location.latitude, location.longitude)
else:
return None
# 应用geocode_city到"城区"列
df['lat'], df['lon'] = zip(*df['城区'].apply(geocode_city))
# 检查是否有缺失的经纬度
df[df['lat'].isnull()]
# 如果有缺失值,考虑使用填充策略(如使用平均值或最近邻插补)
# 创建GeoDataFrame
gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['lon'], df['lat']), crs={'init': 'epsg:4326'})
# 绘制地图
ax = gdf.plot(column='城区', cmap='OrRd', legend=True)
plt.title('广州市区房屋成交房源分布')
plt.show()
```
阅读全文
相关推荐


















