transbigdata笔记:数据预处理

0 数据

使用 transbigdata/docs/source/gallery/data/TaxiData-Sample.csv at main · ni1o1/transbigdata (github.com)

和transbigdata/docs/source/gallery/data/sz.json at main · ni1o1/transbigdata (github.com) 

 0.1 导入库

import transbigdata as tbd
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt

0.2 读取出租车轨迹数据

data=pd.read_csv('TaxiData-Sample.csv',names= ['VehicleNum', 'Time', 'Lng', 'Lat', 'OpenStatus', 'Speed'])
data

0.3 读取深圳各区json数据(并可视化)

sz=gpd.read_file('sz.json')
sz

sz.plot(figsize=(15,8))

1 数据预处理(和地理坐标相关)

1.1 clean_outofbounds

1.1.1 基本使用方法

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

并排除研究区域外的数据 

1.1.2 主要参数说明

data数据
bounds研究区域左下角和右上角的纬度和经度,顺序为 [lon1, lat1, lon2, lat2]
col data中经纬度列名

1.1.3 举例

tbd.clean_outofbounds(data,[114.0,22.5,114.3,22.6])

1.2 clean_outofshape

1.2.1 基本使用方法

输入研究区域的地理数据框并排除研究区域以外的数据

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

1.2.2 主要参数

data数据
shape研究区的GeoDataFrame
col经纬度列名
accuracy

栅格的大小。

原理是先做数据栅格化,然后再做数据清理。

尺寸越小,精度越高

1.2.3 举例

tbd.clean_outofshape(data,sz,accuracy=100)

tbd.clean_outofshape(data,sz,accuracy=1000)

accuracy 越小,筛选得越细

2 数据预处理(和出租车相关)

2.1 clean_taxi_status

  • 从出租车数据中删除乘客携带状态的瞬时变化记录。这些异常记录会影响旅行订单判断
  • 判断方法:如果同一车辆上一条记录和下一条记录的乘客状态与该记录不同,则应删除该记录【不可以一瞬间接客/不接客】

2.1.1 主要使用方法

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

2.1.2 主要参数

data数据
col 列名,顺序为[‘VehicleNum’, ‘Time’, ‘OpenStatus’]
timelimit 

 可选,以秒为单位。

如果上一条记录和下一条记录之间的时间小于时间阈值,则将删除该记录

【个人觉得是,和上一条记录的时间差 & 和下一条记录的时间差 都小于阈值,那么删除该记录】

这个阈值表示允许状态变化的最短时间间隔

  • 对于出租车,就是前一个乘客下车,正好下一个乘客上车,那么前一个乘客下车的时间/后一个乘客上车的时间就是这个阈值;
  • 比如阈值是1分钟,如果和上(下)一条记录的时间差为90s,说明有可能是出租车无缝衔接,那么这条记录不应该删去;如果如果和上(下)一条记录的时间差为20s,这么短的时间乘客不可能上车/下车,这条记录就是噪声,应该被删去

2.1.3 举例

data = tbd.clean_outofshape(data, sz, col=['Lng', 'Lat'], accuracy=500)
data

data2 = tbd.clean_taxi_status(data, col=['VehicleNum', 'Time', 'OpenStatus'])
data2

2.1.4 删去的那些行举例说明

我们看一下删去的行都是什么特点呢?

根据pandas笔记:找出在一个dataframe但不在另一个中的index-CSDN博客

我们得到在data,但不在data2中的index

diff_index = data.index.difference(data2.index)
diff_index
'''
Index([   710,    807,    844,   1372,   1564,   1684,   1690,   1753,   2842,
         4150,
       ...
       532055, 533757, 534219, 540261, 540471, 540481, 541260, 541263, 541889,
       542487],
      dtype='int64', length=914)
'''

看一下710行是什么东西吧:

data.iloc[710]
'''
VehicleNum         24741
Time            16:16:00
Lng           113.810135
Lat            22.626522
OpenStatus             0
Speed                  0
Name: 710, dtype: object
'''

然后看一下24741号车辆的记录

pd.set_option('display.max_rows', None)
#显示dataframe所有行

data[data['VehicleNum']==24741].sort_values('Time')
#筛选 24741号 车辆,按照Time排序

确实上一条记录和下一条记录的乘客状态与该记录不同

2.1.5 timelimit


pd.set_option('display.max_rows', 10)
data3 = tbd.clean_taxi_status(data, col=['VehicleNum', 'Time', 'OpenStatus'],timelimit=25)

data.index.difference(data3.index)
'''
Index([   807,    844,   1684,   1753,   6433,   6437,   7709,   7739,   9741,
        10852,
       ...
       507166, 511979, 514909, 514954, 523687, 524631, 540471, 540481, 541260,
       541263],
      dtype='int64', length=329)
'''

此时710和后一条记录的时间间隔(38秒)大于阈值25秒,说明不是噪声,所以不删去

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/309845.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过 Elastic Stack 充分利用电信领域生成式 AI 的力量

作者:Elastic Piotr Kobziakowski, Jrgen Obermann 在瞬息万变的电信领域,Elastic Stack 与生成式 AI 的集成正在开创运营效率和创新的新时代。 这些技术不仅增强了网络运营,而且还彻底改变了各个部门的内部流程。 下面,我们将深入…

Java 并发之《深入理解 JVM》关于 volatile 累加示例的思考

在周志明老师的 《深入理解 JVM》一书中关于 volatile 关键字线程安全性有一个示例代码(代码有些许改动,语义一样): public class MyTest3 {private static volatile int race 0;private static void increase() {race;}public …

视频监控录像服务器(中心录像服务器)功能详细介绍

目 录 一、概述 (一)定义 (二)视频监控中心录像服务器 二、存储策略服务 (一)存储策略配置 1、 录入页面 2、 选择需要进行录像的视频 3、批量选择多个通道号 4、其他关键参数…

rocketmq实现延迟消息

SpringBoot整合RocketMQ发送延时消息 springboot rocketmq 延迟消息 Windows下RocketMQ安装及可视化界面搭建 Java 客户端 RocketMQ延迟消息 项目背景 项目中有延时消息的需求,综合考量RocketMQ比较适合。 RocketMQ支持多维度的延迟级别 支持多种消息类型 基…

Windows安装PostgreSQL常见问题总结解决

1.用户权限不足/未关闭防火墙&杀毒软件 1.1.数据库初始化错误 1.2.SQL模块没有成功加载到数据簇 在安装PostgreSQL时,我们可能会遇到1.1和1.2的情况,其实这两个为一类问题,即安装权限不足。首先检测自己的用户是不是本地组Administrator再…

使用 Windbg 分析软件异常时的诸多细节与技巧总结

目录 1、dump文件 1.1、dump文件的生成方式 1.2、dump文件的大小 2、pdb符号文件 2.1、pdb文件的路径设置 2.2、pdb文件的时间戳与名称问题 2.3、如何确定要找哪些pdb文件? 3、使用Windbg静态分析dump文件以及动态调试程序的一般步骤 4、确定发生异常或崩溃…

Vue中的class和style绑定

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介动态绑定class对象语法数组语法 动态绑定style对象语法多重值 ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习…

Provide/Inject 依赖注入(未完待续)

父组件传递给子组件数据,通过props,但是需要逐层传递 provide/Inject 的推出就是为了解决这个问题,它提供了一种组件之间共享此类值的方式,不必通过组件树每层级显示地传递props 目的是为了共享那些被 认为对于一个组件树而言是全局的数据 p…

MulticoreWare与Imagination一同按下汽车计算工作负载的“加速键”

中国北京 – 2024年1月8日 - MulticoreWare Inc与Imagination Technologies共同宣布已在德州仪器TDA4VM处理器上实现了GPU计算,不仅使算力提升了约50 GFLOPS,而且还实现了自动驾驶和高级驾驶辅助系统(ADAS)常见工作负载性能的跃升…

MySQL 从零开始:03 基本入门语句

文章目录 1、连接数据库1.1 命令提示符登陆1.2 MySQL 8.0 Command Line Client 登陆1.3 MySQL Workbench 登陆 2、基本语句2.1 查看所有库2.2 创建库2.3 删除库2.4 选择数据库2.5 查看表2.6 创建表2.7 删除表2.8 改表名2.9 清空表 在上一小节中介绍了 MySQL 数据库的安装&#…

【Win10安装Qt6.3】安装教程_保姆级

前言 Windows系统安装Qt4及Qt5.12之前版本和安装Qt.12之后及Qt6方法是不同的 ;因为之前的版本提供的有安装包,直接一路点击Next就Ok了。但Qt5.12版本之后,Qt公司就不再提供安装包了,不论是社区版,专业版等&#xff0c…

羌族特色民居----碉楼

羌族是四川的一个少数民族,他们独具特色的民居就是----碉楼。在羌语中,碉楼被称为“邓笼”,意为美丽、高贵的房子,羌族人有“依山而居,垒石为屋,高者十余丈”的习俗。碉楼的高度在十米至三十米之间。用于御…

飞腾FT2000-4/D2000-8 VPX主板

产品特点 ①国产飞腾FT2000-4或D2000-8处理器 ,同一模块兼容两种处理器,可以根据性能需要选择 ②丰富的万兆以太网、千兆以太网、USB、SATA接口,可用作数据处理、存储、通信服务器 ③内部集成FPGA-V7协处理器,支持SRIO、LVDS等…

k8s的存储卷、数据卷

容器内的目录和宿主机目录进行挂载。 容器在系统上的生命周期是短暂的。 k8s用控制器创建的pod。delete相当于重启。容器的状态也会恢复到初始状态。一旦恢复到初始状态,所有的后天编辑的文件都会消失 容器和节点之间创建一个可以持久化保存容器内文件的存储卷。…

详解JavaScript中的WeakMap和WeakSet

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 内存管理一直是JavaScript这门语言中的难点和痛点。由于其自动垃圾回收机制的限制,在某些场…

Kettle Local引擎使用记录(一)(基于Kettle web版数据集成开源工具data-integration源码)

Kettle Web 📚第一章 前言📚第二章 demo源码📗pom.xml引入Kettle引擎核心文件📗java源码📕 controller📕 service📕 其它📕 maven settings.xml 📗测试📕 测试…

Opencv实验合集——实验七:二维码和条形码匹配

1.概念 二维码(QR码) 概念: 二维码是一种矩阵式的二维条码,由黑白方块组成,可以存储大量的信息,包括文本、链接、数字等。QR码的编码方式是在矩阵中通过不同的黑白方块组合表示不同的信息。 特点&#xf…

PHP开发日志 ━━ 不同方法判断某个数组中是否存在指定的键名,测试哪种方法效率高

我们可以用isset($arr[a]) 或者 array_key_exists(a, $arr) 来判断a键名是否存在与$arr数组。 那么这两种方式哪个运行速度快呢? 不多废话了,现在我们写一段代码来测试一下: $array [a > 1, b > 2, c > 3];$start microtime(tru…

图像去雨-雨线清除-图像处理(计算机视觉作业-附代码)

图像去雨是一种图像处理技术,可以通过算法的方式去除图像中的雨滴或雨线等噪声。在实际应用中,图像去雨技术可以提高图像质量,使得图像更加清晰、自然、易于识别和理解。 通常,图像去雨技术基于计算机视觉和深度学习等技术&#…

算法与数据结构--最小生成树算法

一.应用的场景 类似于这种最小成本问题,实际上就是计算加权图把所有点连起来权重之和最小值的时候是怎么连接的。类似的问题还有最短耗时之类的问题。 二.最小生成树的定义 生成树: 图的生成树是它的一颗含有其所有顶点的无环连通子图。 【简单说就是所…