| name | transbigdata-preprocess |
| description | 使用 TransBigData 进行数据预处理与质量评估。适用于数据质量检查、采样间隔分析、边界过滤、ID重编号等任务。 |
TransBigData 数据预处理指南
安装
pip install transbigdata
数据质量评估
1. 数据概览 - data_summary()
输出数据集的基本统计信息。
import transbigdata as tbd
tbd.data_summary(
data,
col=['VehicleNum', 'Time'],
show_sample_duration=True,
roundnum=2
)
输出内容:
2. 采样间隔分析 - sample_duration()
计算每条记录与前一条的时间间隔。
data_with_duration = tbd.sample_duration(
data,
col=['VehicleNum', 'Time']
)
数据过滤
3. 边界框过滤 - clean_outofbounds()
根据矩形边界过滤数据。
bounds = [113.75, 22.4, 114.62, 22.86]
data_clean = tbd.clean_outofbounds(
data,
bounds=bounds,
col=['Lng', 'Lat']
)
4. 多边形过滤 - clean_outofshape()
根据任意形状的地理边界过滤数据。
import geopandas as gpd
area = gpd.read_file('study_area.shp')
data_clean = tbd.clean_outofshape(
data,
shape=area,
col=['Lng', 'Lat'],
accuracy=500
)
ID 重编号
5. 按时间间隔重编号 - id_reindex()
当同一ID的记录时间间隔过大时,视为不同个体。
data_reindex = tbd.id_reindex(
data,
col='VehicleNum',
timegap=7200,
timecol='Time',
new=False,
suffix='_new'
)
6. 按距离间隔重编号 - id_reindex_disgap()
当同一ID的相邻记录距离过大时,视为不同个体。
data_reindex = tbd.id_reindex_disgap(
data,
col='VehicleNum',
disgap=1000,
suffix='_new'
)
完整示例:数据预处理流程
import pandas as pd
import geopandas as gpd
import transbigdata as tbd
data = pd.read_csv('gps_data.csv')
data['Time'] = pd.to_datetime(data['Time'])
print("=== 数据概览 ===")
tbd.data_summary(data, col=['VehicleNum', 'Time'])
data = tbd.sample_duration(data, col=['VehicleNum', 'Time'])
print(f"采样间隔统计: 均值={data['duration'].mean():.1f}秒, 中位数={data['duration'].median():.1f}秒")
bounds = [113.75, 22.4, 114.62, 22.86]
data = tbd.clean_outofbounds(data, bounds=bounds, col=['Lng', 'Lat'])
print(f"边界过滤后: {len(data)} 条记录")
data = tbd.id_reindex(data, col='VehicleNum', timegap=3600, timecol='Time')
print(f"重编号后车辆数: {data['VehicleNum_new'].nunique()}")
data.to_csv('gps_data_cleaned.csv', index=False)
使用建议
- 先检查后处理: 使用
data_summary() 了解数据质量
- 边界过滤顺序: 先用边界框快速过滤,再用多边形精确过滤
- ID重编号:
- 出租车数据通常用时间间隔(2小时)
- 手机信令数据可能需要用距离间隔
- 采样间隔: 了解数据采样频率有助于后续参数设置
参考文档