出租车数据集可视化
一、案例背景与数据集介绍
在城市交通管理与规划领域,出租车作为重要的公共交通工具之一,其运行轨迹数据蕴含着丰富的价值,通过分析这些数据,可以深入了解城市交通流量分布、道路拥堵情况以及市民出行规律等关键信息,为城市交通管理提供有力支持,本文将以成都市为例,利用TransBigData库对出租车轨迹数据进行可视化分析,并探讨其应用价值。
我们使用的数据集是成都市的出租车轨迹数据,包括车辆编号(VehicleNum)、时间戳(Time)、经度(Lng)、纬度(Lat)和载客状态(OpenStatus)五个字段,该数据集记录了多辆出租车在一段时间内的详细运行轨迹,为我们提供了丰富的分析素材。
二、数据预处理
1. 数据导入与清洗
使用Pandas库将CSV格式的轨迹数据读入内存,由于数据量较大,建议先筛选部分数据进行分析,我们可以只选取前几百条记录进行初步探索,需要检查数据中是否存在缺失值或异常值,并进行相应的处理。
import pandas as pd 读取数据 data = pd.read_csv('20140803_train.csv', header=None) data.columns = ['VehicleNum', 'Time', 'Lng', 'Lat', 'OpenStatus'] 查看数据概览 print(data.head()) print(data.info())
2. 坐标转换
由于GPS数据可能采用不同的坐标系,为了确保地图匹配的准确性,我们需要将经纬度坐标从GCJ-02坐标系转换为WGS-84坐标系,这可以通过CoordinatesConverter库实现。
from CoordinatesConverter import CoordinatesConverter 坐标转换函数 def convert_coordinates(data): data['Lng'], data['Lat'] = CoordinatesConverter.gcj02towgs84(data['Lng'], data['Lat']) return data data = convert_coordinates(data)
3. 数据筛选与去重
根据研究需求,我们可能需要筛选特定时间段或区域内的数据,对于重复记录(如同一车辆在同一时间点被多次记录),应予以去除。
筛选特定时间段内的数据 start_time = pd.to_datetime('2014-08-03 00:00:00') end_time = pd.to_datetime('2014-08-03 23:59:59') data = data[(pd.to_datetime(data['Time']) >= start_time) & (pd.to_datetime(data['Time']) <= end_time)] 删除重复记录 data = data.drop_duplicates()
三、数据栅格化处理
为了提高数据处理效率并便于后续可视化,我们将出租车轨迹数据进行栅格化处理,栅格化是将连续的地理空间划分为一系列网格单元,并将数据分配到相应的网格中。
1. 读取地图信息
我们需要读取研究区域的地图信息,并将其转换为GeoDataFrame格式,这里以成都市为例,地图数据可以从相关网站下载或自行绘制。
import geopandas as gpd 读取地图文件 map_file = 'citys_510100.json' cd = gpd.read_file(map_file) cd.crs = None
2. 栅格化处理
利用TransBigData库中的栅格化函数,将出租车轨迹数据转换为栅格地图上的位置信息,这一步骤包括生成GeoDataFrame变量、加载底图、绘制研究范围图像以及生成栅格化图像等。
import transbigdata as tbd 生成GeoDataFrame变量 bounds = [102.95, 30.08, 104.9, 31.45] # 设定研究范围边界 fig = plt.figure(figsize=(10, 10)) cd.plot(ax=fig.add_subplot(1, 1, 1), color='white', edgecolor='k') plt.title('Chengdu City Map') plt.xlabel('Longitude') plt.ylabel('Latitude') plt.show()
我们将出租车轨迹数据按照栅格大小进行分组统计,生成每个栅格内的车辆数量或其他指标,这些统计数据可以进一步用于热力图等可视化展示。
四、可视化分析
1. 热力图展示
热力图是一种有效的可视化手段,可以直观地展示出租车在不同区域的分布密度,通过Matplotlib库的imshow
函数,我们可以绘制出成都市出租车轨迹数据的热力图。
import matplotlib.pyplot as plt 假设grouped_data是已经栅格化处理后的数据 plt.figure(figsize=(10, 5)) plt.imshow(grouped_data.unstack().fillna(0).values, cmap='hot', interpolation='nearest') plt.colorbar() plt.title('Taxi Trajectory Heatmap') plt.xlabel('X-axis') plt.ylabel('Y-axis') plt.show()
2. OD矩阵分析
OD矩阵(Origin-Destination矩阵)是交通规划中常用的分析工具之一,通过计算不同起点和终点之间的出租车行驶次数或距离,我们可以了解城市交通流量的分布特征,TransBigData库提供了OD矩阵的计算和可视化功能。
计算OD矩阵 od_matrix = tbd.calculate_od_matrix(data) 可视化OD矩阵 tbd.visualization_od(od_matrix)
3. 交互式可视化
除了静态图表外,我们还可以利用交互式工具(如KeplerGL)来实现更加动态和灵活的可视化效果,可以通过滑动时间轴来观察不同时间段内出租车的运行轨迹变化;或者通过点击地图上的某个区域来查看该区域内的详细交通信息等。
from keplergl import KeplerGl 创建KeplerGL对象并配置参数 map1 = KeplerGl() map1.add_data(data) map1.config(center=[104.065755, 30.572819], zoom=10) map1.add_layer_for_points("出租车轨迹", data, size=5, color="blue") map1.save_to_html("taxi_trajectory.html")
五、结果与讨论
通过对成都市出租车轨迹数据的可视化分析,我们可以得到以下主要发现:
1、交通流量分布:热力图显示了成都市不同区域的交通流量分布情况,颜色越深的区域表示出租车运行越频繁,反映了这些区域可能是商业中心、居民区或交通枢纽等高人流密集区。
2、OD矩阵分析:OD矩阵揭示了不同起点和终点之间的交通流量分布特征,通过比较不同时间段的OD矩阵变化,我们可以了解城市交通流量的动态变化规律以及潜在的拥堵点或热点区域。
3、时空分布特征:交互式可视化工具允许我们从时间和空间两个维度上深入分析出租车的运行轨迹,可以观察到早晚高峰时段某些路段的交通流量显著增加;或者在某些特殊事件(如节假日、大型活动)期间交通流量的异常波动等。
这些分析结果对于城市交通管理部门制定交通规划和管理策略具有重要意义,可以根据交通流量分布情况优化公交线路布局、调整信号灯配时方案;或者针对拥堵点采取限行、分流等措施以缓解交通压力,这些数据还可以为智能交通系统的研发提供数据支持和技术参考。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1388032.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复