Python分析出租车轨迹热点交互网络并可视化
使用Python分析出租车轨迹热点交互网络并进行可视化展示
本文介绍如何使用Python分析出租车轨迹数据中的热点交互网络,并使用folium库进行可视化展示。示例代码展示了如何利用pandas、geopandas等库读取数据、计算位置出现次数、创建地图以及添加热点交互网络和标记。
示例代码:
import pandas as pd
import geopandas as gpd
import folium
# 读入数据
df = pd.read_csv('taxi_data.csv')
# 转换为GeoDataFrame
gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['经度'], df['纬度']))
# 计算每个位置的出现次数
counts = gdf.groupby('geometry').size().reset_index(name='count')
# 选出出现次数最多的10个位置
top10 = counts.sort_values('count', ascending=False).head(10)
# 创建地图
m = folium.Map(location=[30.67, 104.06], zoom_start=11)
# 添加热点交互网络
folium.plugins.HeatMap(top10[['geometry', 'count']], radius=10).add_to(m)
# 添加标记
for i, row in top10.iterrows():
folium.Marker(location=[row['geometry'].y, row['geometry'].x],
popup=f'Count: {row['count']}').add_to(m)
# 展示地图
m
代码解释:
- 读入数据: 使用pandas库读入csv文件,其中包含纬度、经度、时间等数据。
- 转换为GeoDataFrame: 使用geopandas库将数据转换为GeoDataFrame,便于后续的地理位置计算和可视化。
- 计算每个位置的出现次数: 使用groupby函数按位置进行分组,并计算每个组的大小(即出现次数)。
- 选出出现次数最多的10个位置: 按出现次数排序,选取前10个位置。
- 创建地图: 使用folium库创建一个地图,中心点为成都市,缩放级别为11。
- 添加热点交互网络: 使用folium.plugins.HeatMap函数添加热点交互网络,传入出现次数最多的10个位置的数据。
- 添加标记: 使用folium.Marker函数为每个位置添加标记,显示出现次数。
- 展示地图: 使用m变量的show方法展示地图。
注意事项:
这段代码只是一个示例,实际应用中可能需要进行更多的数据清洗、地理位置计算和可视化样式调整等工作。
更多参考:
- pandas: https://pandas.pydata.org/
- geopandas: https://geopandas.org/
- folium: https://python-visualization.github.io/folium/
原文地址: https://www.cveoy.top/t/topic/n0Vh 著作权归作者所有。请勿转载和采集!