文章目录
一、案例目的
在python中计算一天内每小时 / 30分钟出租车订单的数量,并绘制订单时变情况的折线图。
二、练习数据
深圳市出租车GPS数据:TaxiData-Sample.csv
核心字段:车辆ID(Num),时间(Time),经度(Lon),纬度(Lat),载客状态(OpenStatus)。说明:当OpenStatus值为1的时候,为载客状态,反之OpenStatus值为0时为空载(如图所示)。

三、解题思路
- 对出租车GPS数据进行数据清洗及预处理
- 利用TransBigData提取出租车OD
- 对OD数据的接单时间按小时/分钟进行分组
- 统计每个时段的订单数量
- 利用matplotlib绘制折线图
四、代码实现
1.数据清洗及预处理
为什么要进行数据清洗?
因为出租车GPS数据的OpenStatus字段中可能会出现异常情况:
- 在连续0的序列中,突然出现一个1
- 在连续1的序列中,突然出现一个0
这种两种情况的产生都极有可能是采集设备的突发异常造成的,这些记录的存在会影响出行订单判断。因此在数据清洗中,应将这两种情况都予以剔除。
本次练习主要利用TransBigData包中的 tbd.clean_taxi_status()对出租车GPS数据进行清洗(参考:TransBigData出租车GPS数据处理)。
#导入所需模块
import pandas as pd
import geopandas as gpd
import transbigdata as tbd
import datetime
import numpy as np
#输入数据
data = pd.read_csv('data/TaxiData-Sample.csv',header= None)
#由于原始数据没有列名,因此这里需要重新命名
data.columns = ['Num','Time','Lon','Lat','Openstatus','Speed']
#删除多余列Speed
data = data.drop(columns='Speed')
#数据排序:根据车辆Num和Time
data = data.sort_values(by=['Num','Time'])
#利用TransbigData进行数据清洗
data = tbd.clean_taxi_status(data,col=['Num'

最低0.47元/天 解锁文章
2141

被折叠的 条评论
为什么被折叠?



