数据预处理

各类数据通用的预处理

transbigdata.clean_same(data, col=['VehicleNum', 'Time', 'Lng', 'Lat'])

删除信息与前后数据相同的数据以减少数据量 如:某个体连续n条数据除了时间以外其他信息都相同,则可以只保留首末两条数据

输入

dataDataFrame

数据

colList

列名,按[个体ID,时间,经度,纬度]的顺序,可以传入更多列。会以时间排序,再判断除了时间以外其他列的信息

输出

data1DataFrame

清洗后的数据

transbigdata.clean_drift(data, col=['VehicleNum', 'Time', 'Lng', 'Lat'], speedlimit=80)

删除漂移数据。条件是,此数据与前后的速度都大于speedlimit,但前后数据之间的速度却小于speedlimit。 传入的数据中时间列如果为datetime格式则计算效率更快

输入

dataDataFrame

数据

colList

列名,按[个体ID,时间,经度,纬度]的顺序

输出

data1DataFrame

研究范围内的数据

transbigdata.clean_outofbounds(data, bounds, col=['Lng', 'Lat'])

输入研究范围的左下右上经纬度坐标,剔除超出研究范围的数据

输入

dataDataFrame

数据

boundsList

研究范围的左下右上经纬度坐标,顺序为[lon1,lat1,lon2,lat2]

colList

经纬度列名

输出

data1DataFrame

研究范围内的数据

transbigdata.clean_outofshape(data, shape, col=['Lng', 'Lat'], accuracy=500)

输入研究范围的GeoDataFrame,剔除超出研究区域的数据

输入

dataDataFrame

数据

shapeGeoDataFrame

研究范围的GeoDataFrame

colList

经纬度列名

accuracynumber

计算原理是先栅格化后剔除,这里定义栅格大小,越小精度越高

输出

data1DataFrame

研究范围内的数据

transbigdata.id_reindex(data, col, new=False, timegap=None, timecol=None, suffix='_new', sample=None)

对数据的ID列重新编号

输入

dataDataFrame

数据

colstr

要重新编号的ID列名

newbool

False,相同ID的新编号相同;True,依据表中的顺序,ID再次出现则编号不同

timegapnumber

如果个体在一段时间内没出现(timegap为时间阈值),则编号为新的个体。此参数与timecol同时设定才有效果。

timecolstr

时间字段名称,此参数与timegap同时设定才有效果。

suffixstr

新编号列名的后缀,设置为False时替代原有列名

sampleint

传入数值,对重新编号的个体进行抽样

输出

data1DataFrame

重新编号的数据

transbigdata.id_reindex_disgap(data, col=['uid', 'lon', 'lat'], disgap=1000, suffix='_new')

对数据的ID列重新编号,如果相邻两条记录超过距离,则编号为新id

输入

dataDataFrame

数据

colstr

要重新编号的ID列名

disgapnumber

如果个体轨迹超过一定距离,则编号为新的个体。

suffixstr

新编号列名的后缀

输出

data1DataFrame

重新编号的数据

数据格式转换

transbigdata.dumpjson(data, path)

输入json数据,存储为文件。这个方法主要是解决numpy数值型无法兼容json包报错的问题

输入

datajson

要储存的json数据

pathstr

保存的路径

轨迹数据清洗

transbigdata.clean_traj(data, col=['uid', 'str_time', 'lon', 'lat'], tripgap=1800, disgap=50000, speedlimit=80)

轨迹数据清洗组合拳

输入

dataDataFrame

轨迹数据

colList

列名,以[个体id,时间,经度,纬度]排列

tripgapnumber

多长的时间视为新的出行

disgapnumber

多长距离视为新的出行

speedlimitnumber

车速限制

输出

data1DataFrame

清洗后的数据

出租车数据的预处理

transbigdata.clean_taxi_status(data, col=['VehicleNum', 'Time', 'OpenStatus'], timelimit=None)

删除出租车数据中载客状态瞬间变化的记录,这些记录的存在会影响出行订单判断。 判断条件为:如果对同一辆车,上一条记录与下一条记录的载客状态都与本条记录不同,则本条记录应该删去

输入

dataDataFrame

数据

colList

列名,按[车辆ID,时间,载客状态]的顺序

timelimitnumber

可选,单位为秒,上一条记录与下一条记录的时间小于该时间阈值才予以删除

输出

data1DataFrame

清洗后的数据