[转]出租车轨迹处理(二):时空分析

2023-10-26

接下来就要进行一些简单的分析了。
今天的目标是如何对某一感兴趣区域进行出租车数据的时空分析。



一、轨迹数据预处理

这一步在上一篇文章中已经有了介绍。
步骤无非就是:



1)使用pandas读取数据

import pandas as pd
import numpy as np

f=open('D:\动态人口分布实验\交通赛数据_上\\20140803_train.txt')
data=pd.read_csv(f,names=['ID','lat','lon','passager','time'])



2)根据轨迹数据的flag列(代表是否为空车),得到flag列变化的行,视为上、下客的位置。然后丢弃无用的列。

data['passager_1']=data['passager'].shift(1)
data['change']=data['passager']-data['passager_1']
data=data.drop(['passager_1'],axis=1)
#索引得到change列为1或-1的列
data=data.loc[(data['change']==1) |(data['change']==-1)]



3)将time一列从字符串转为datatime类型,并将该列设为索引。

import datetime
data['time']=pd.to_datetime(data['time'])
data=data.set_index('time')
#按照索引(时间)排序
data=data.sort_index()



4) 分别保存上、下车的位置数据(根据flag=1/-1)

PUP=data.loc[data['change']==1]
PUP.to_csv('D:\深度学习估算人口\\0816PUP.csv')
DOP=data.loc[data['change']==-1]
DOP.to_csv('D:\深度学习估算人口\\0816DOP.csv')



二、得到特定区域出租车数据

结合shp数据处理数据,对大牛来说,最好的方法首先从arcgis中生成感兴趣区域的shp文件,然后从python中使用gdal等库来处理。不然就是用arcgis中的arcpy。
但可惜我不是大牛,我只好采用笨办法曲线救国。



1)arcgis中导入出租车上、下客的csv文件=

按照x、y坐标显示。相当于把点转为了shp格式。
如图:将DOP和PUP按照xy数据显示后,分别生成了对应的point格式文件
在这里插入图片描述



2)新建shpfile,选取感兴趣区

在这里插入图片描述



3)使用感兴趣区的shp裁剪上、下客point

在这里插入图片描述



4)对裁剪后的point导出csv格式属性表



5) python中导入csv,继续进行处理



三、时空数据挖掘



1) 预处理

## 下车文件读取
fff=open('D:\深度学习估算人口\\成都体育中心0816DOP.txt')
gym_DOP=pd.read_csv(fff)
gym_DOP=gym_DOP.drop(["OBJECTID","ID","lat","lon","passager"],axis=1)
gym_DOP['time']=pd.to_datetime(gym_DOP['time'])
gym_DOP=gym_DOP.set_index('time')

## 上车文件读取
ffff=open('D:\深度学习估算人口\\成都体育中心0816PUP.txt')
gym_PUP=pd.read_csv(ffff)
gym_PUP=gym_PUP.drop(["OBJECTID","ID","lat","lon","passager"],axis=1)
gym_PUP['time']=pd.to_datetime(gym_PUP['time'])
gym_PUP=gym_PUP.set_index('time')



2)按小时统计

人数可直接通过上、下车的标注列【change】来计算。
但由于下车人数的标注【change】为-1,故要新建一列,设为abs(change),然后再统计人数。上车人数的【change】是1,可以直接按照change列统计,但是为了统一起见(强迫症起见),还是同样新建num列处理了一下。
这里不得不感叹pandas对时间序列处理的强大之处。一个简单的resample('H) 函数就可以直接按照Hour统计。这方面的一些具体参数可以参考《使用python进行数据分析》一书。

# 下车人数按小时统计
gym_DOP['num']=abs(gym_DOP['change'])
gym_DOP=gym_DOP.resample('H').sum()
#上车人数按小时统计
gym_PUP['num']=abs(gym_PUP['change'])
gym_PUP=gym_PUP.resample('H').sum()



3)作图显示上、下车趋势

直接使用pandas自带的作图函数plot()。
发现这个函数不是太方便设置标注,如下:

##上车人数

N=gym_PUP['num'].plot(title='passagers')
fig=N.get_figure()
fig.set_size_inches(20,9)
# 下车人数
N=gym_DOP['num'].plot(title='passagers')
fig=N.get_figure()
fig.set_size_inches(20,9)


在这里插入图片描述

所以使用pandas的concat函数整合两个文件中的上、下车人数,然后一起作图显示。

all_data_col = pd.concat((gym_PUP['num'],gym_DOP['num']),axis = 1)
all_data_col.columns=['gym_up','gym_down']
all_data_col.plot()

在这里插入图片描述



4)统计累计净流量

在一天24小时内,从早到晚的“净流量”(即截止第t小时,流入的总数减去流出的总数)是很有意义的一个特征。
这时候就需要借助强大的pandas.num.cumsum()函数了。新建一列代表【净流量】,然后作图表示。

gym_PUP['flow']=gym_DOP.num.cumsum()-gym_PUP.num.cumsum()
FF=gym_PUP['flow'].plot(title='passagers')
fig=N.get_figure()
fig.set_size_inches(20,9)

在这里插入图片描述


---------------------
作者:菜鸡的自我拯救
来源:CSDN
原文:https://blog.csdn.net/weixin_37659245/article/details/89486425
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[转]出租车轨迹处理(二):时空分析 的相关文章

  • 高效生成所有小于 N 的合数(及其因式分解)

    我想构建一个高效的 Python 迭代器 生成器 它会产生 所有小于 N 的合数 连同他们的质因数分解 我将其称为 composites with factors 假设我们已经有小于 N 的素数列表 或者可以执行相同操作的素数生成器 请注意
  • AWS S3 列表键以字符串开头

    我在 AWS Lambda 函数中使用 python 列出以特定 id 开头的 s3 存储桶中的键 for object in mybucket objects all file name os path basename object k
  • 在Python 3中从CGI输出二进制数据

    这个问题与this one https stackoverflow com q 908331 554319 我在从 Python 2 中的 CGI 脚本打印原始二进制数据时没有遇到任何问题 例如 usr bin env python2 im
  • Python将txt文件读入数字列表列表[重复]

    这个问题在这里已经有答案了 我的 txt 文件如下所示 1 3 5 1 4 4 1 4 7 1 4 8 2 4 5 我试图将其转换为一个列表 其中包括txt文件中的所有列表 所以我的示例所需的输出是 1 3 5 1 4 4 1 4 7 1
  • 关于 NumPy 数组切片何时是引用以及何时是副本的混淆

    如果我尝试以下操作 gt gt gt import numpy as np gt gt gt arr np arange 10 gt gt gt s arr 2 5 gt gt gt s 12 gt gt gt s arr array 12
  • Python Selenium:如何获取 cookie 并格式化它们以在 http 请求中使用

    我想知道从 selenium webdriver 实例 chromedriver 获取 cookie 的最佳方法 并将它们转换为可以作为 http 标头传递的 cookie 字符串 这是我尝试过的方法 获取 selenium 提供的每个 c
  • 如何矢量化 3D Numpy 数组

    我有一个 3D numpy 数组 例如a np zeros 100 100 20 我想对每个执行操作x y涉及所有元素的位置z轴 结果存储在一个数组中 例如b np zeros 100 100 在同一个对应的x y位置 现在我使用 for
  • 多个挑选事件干扰

    我有几个数据系列分散在一个图中 并且希望能够为它们切换注释 问题是 有时会触发两个拾取事件 当用户单击注释和点内的点时 注释 拾取事件会清除注释 但 点 拾取事件会将其放回原处 因此效果是切换不起作用 df pd DataFrame a n
  • 如何使用python opencv2减去两个图像以获得前景对象

    有没有办法在 python opencv2 中减去两个图像 图片 1 任何图像 例如房屋图像 静态图像 图 2 带有物体的同一图像 在房子里 一个人站着 静态图像 动态物体 图片 3 图片 2 图片 1 如果我们减去Image2 from
  • 有没有办法使用 Paramiko 和 Python 来获取您连接的 SSH 服务器的横幅?

    有没有办法使用 Paramiko 和 Python 来获取您尝试连接的 SSH 服务器的横幅 我正在处理许多机器的超安全服务器设置过程 密码是通过预定义的密钥生成的 该密钥与 SSH 横幅一起打印出来 我可以访问将为我提供密码的实用程序 但
  • python: from x import y 改变之前的导入结果

    我试图理解 python 中的包和模块名称隐藏规则 并偶然发现了一种情况 我不明白为什么我看到的结果有意义 这种情况发生在 python 2 中 from future import absolute imports 和Python 3 假
  • 删除列值 < 0 的 Pandas DataFrame 行

    我已经阅读了答案this https stackoverflow com questions 18172851 deleting dataframe row in pandas based on column value线程 但它没有回答我
  • Django AJAX JSON 响应在浏览器中显示为原始文本

    我正在 Pinax 框架内使用 Django 1 4 2 开发一个 Stripe Web 应用程序 django stripe 付款 艾尔达瑞安 阿贾克斯 我已经一切正常 除了 ajax 响应 JSON 格式 似乎没有被任何 ajax 回调
  • 如何使用 matplotlib 绘制与比例无关的箭头

    我使用 matplotlib 在 python 中绘制了一条船的轨迹图 如下所示 现在我想添加一些箭头 例如风向 真实航向等 但是 无论绘图处于哪个缩放级别 我都希望箭头具有相同的大小 我尝试了 matplotlib pyplot arro
  • Pygame 弹力球穿过地板下沉

    下面的代码会弹起一个球 但由于某种原因 球在完成弹跳后会穿过地面 有人知道为什么吗 代码的想法是一个球从左上角开始 然后下落并弹起 然后向上和向下移动 依此类推 直到它停止弹跳 但是当它停止弹跳时 它开始抖动并慢慢下沉到地面 我不知道为什么
  • 从 .csv 文件读取值并将其转换为浮点数组

    我偶然发现了一个小编码问题 我基本上必须从 csv 文件中读取数据 该文件看起来很像这样 2011 06 19 17 29 00 000 72 44 56 0 4772 0 3286 0 8497 31 3587 0 3235 0 9147
  • python 2.7编码解码

    我有一个涉及编码 解码的问题 我从文件中读取文本并将其与数据库 Postgres 中的文本进行比较 比较在两个列表内完成 从文件中我得到 jo 的 jo x9a 从数据库中我得到相同值的 jo xc5 xa1 common a for a
  • 响应 django CORS 问题

    错误详情 单击按钮时生成了两个请求 到目前为止我搜索了什么 Axios 通过 Django REST Framework 被 CORS 策略阻止 https stackoverflow com questions 55366740 axio
  • Django admin在同一行显示多个字段

    我创建了一个模型 它将自动显示模型中的所有字段并将其显示在管理页面上 现在 我有一个问题 我希望在同一行上有两个字段 为此我必须在 ModelAdmin 中指定字段集 fieldsets None fields firstname last
  • 使用python opencv从zip加载图像

    我能够成功地从 zip 加载图像 with zipfile ZipFile test zip r as zfile data zfile read test jpg how to open this using imread or imde

随机推荐

  • 芯片的SD/MMC控制器以及SD卡介绍

    1 MMC SD卡 eMMC介绍 1 1 三者关联 1 最早出现的是MMC卡 卡片式结构 按照MMC协议设计 相较于NandFlash芯片来说 MMC卡有2个优势 第一是卡片化 便于拆装 第二是统一了协议接口 兼容性好 2 后来出现SD卡
  • 数据库---mysql 之 常用命令行命令

    1 展示当前所有的数据库 show databases mysql gt show databases Database information schema jzq test mtx 1 mysql performance schema
  • 使用特网云云主机的最显着原因之一

    云计算的快速发展主要是由于移动设备的数量不断增加 云不仅对企业有用 对普通人也有用 我们无需在 PC 上安装程序即可运行程序 通过 Internet 存储和访问内容 无需物理服务器即可开发和测试程序 等等 云计算本质上是我们解决当今企业面临
  • 序列化的简介

    序列化 序列化的介绍 1 1 定义 序列化是将对象状态转换为可保持或传输的格式的过程 与序列化相对的是反序列化 它将流转换为对 象 这两个过程结合起来 可以轻松地存储和传输数据 1 2 序列化的目的 通过序列化以字节流的形式使对象在网络中进
  • 为什么别选计算机专业?

    在知乎看到一个这样的问题 为什么别选计算机专业 这个话题有 800 万人次浏览 以下是一位匿名用户的高赞回答 内容可能比较主观化 仅代表原作者个人观点 如果有不同意见欢迎留言区交流啊 不明白现在鼓吹计算机是什么意思 985计算机毕业 刷Le
  • 广东海洋大学数学与计算机学院校友会,2020年广东海洋大学数学与计算机学院全日制硕士研究生入学考试复试及录取工作方案...

    为规范我校全日制硕士研究生复试工作 保障研究生入学质量 依据教育部有关文件及广东省研究生招生录取工作会议精神 结合学校今年硕士研究生招生工作的实际情况 特制定本工作方案 一 工作原则 研究生复试工作要坚持公开 公平 公正和科学选拔的原则 德
  • 【C++】继承详解

    文章目录 继承的概念 基类和派生类对象赋值转换 继承作用域 派生类的默认成员函数 继承和友元 静态成员变量的继承 菱形继承和虚拟继承 继承和组合 继承的概念 继承机制是面向对象程序设计使代码复用的重要手段 通过继承机制 可以利用已有的数据类
  • C++基础4:构造函数、析构函数、拷贝析构函数、静态成员函数

    构造函数 1 1构造函数 一个特殊的函数与类型名相同 没有返回值类型 保证创建一个对象时 自动调用一次 一个类可以有多个构造函数 作用 初始化对象 如果一个类不提供构造函数 则系统自动提供一个无参构造函数 但一旦提供构造函数 则系统的无参构
  • Head-Free Lightweight Semantic Segmentation with Linear Transformer 新颖的分割网络

    现有的语义分割网络基本都是编码解码结构 新的语义分割网络主要都是在解码阶段添加新的不同模块 提高解码阶段特征处理能力 从而实现语义分割 而这篇文章主要是去除了解码阶段 把工作重心放在了编码阶段 它采用并行架构来利用原型表示作为特定的可学习的
  • Linux Mii management/mdio子系统分析之六 fixed-mii_bus分析(mac2mac分析)

    前面几章我们介绍了MDIO模块的大部分内容 针对mii bus mdio bus phy device phy driver相关的注册 注销均进行了介绍 基本上把mdio模块的内容介绍完了 而本篇介绍的内容 主要是针对虚拟mii bus实现
  • python类基本语法笔记

    语言是工具 一段时间不用就会忘掉语法 静态方法和类方法 什么时候会用到这样的方法呢 类方法是针对类存在的 可以用类直接调用 主要用到的两个函数是staticmethod 和classmethod 简洁的用法是用Python的修饰器 需要注意
  • Vue总结第二天~自定义子组件、父子组件通信、插槽

    目录 一 组件 组件目录 1 注册组件 全局组件 局部组件和demo template模块 1 注册组件的基本步骤 2 全局组件demo 3 局部组件demo 4 template模块的简化 模板的分离写法 即将其内容封装到 templat
  • Matplotlib

    1 折线图 import matplotlib pyplot as plt import numpy as np x np linspace 1 1 50 1到1 有五十个点 y 2 x 1 plt figure num 1 figsize
  • 【计算机网络】第一章:计算机网络概述

    文章目录 1 1 计算机网络在信息时代的作用 1 2 因特网概述 1 3 三种交换方式 1 4 计算机网络的定义和分类 1 5 计算机网络的性能指标 1 6 计算机网络体系结构 计算机网络体系结构 计算机网络体系结构分层的必要性 计算机网络
  • 从gitHub当中更新项目synchronize Update fetch pull 项目的区别。

    11 从gitHub更新项目 方法一 右击你的项目 team synchronize workspace 这样他就会去gitHub那fetch回最新的版本 之后像svn一样 切换到team synchronize视图 注意服务器如有更新 而
  • Vue之插件的介绍

    简介 主要介绍Vue插件的概念 定义和使用 Vue的插件主要是用于增强功能 可以把它看作是一个工具库 可以提供很多强大的功能 比如一些强大的自定义指令 一些强大的工具方法 过滤器等 我们可以编写或者直接引入别人写的插件 就能获得强大的功能
  • odoo 权限

    创建安全组并分配用户 Odoo中的访问权限通过安全组成进行配置 给组指定权限 然后为组分配用户 每个功能区都有中枢应用所提供的基础安全组 在插件继承已有应用时 它们应对相应的组添加权限 参见本章稍后的向模型添加访问权限一节 在插件模块添中添
  • HDOJ 1058 Humble Numbers解题报告【DP】

    Humble Numbers 题目详见http acm hdu edu cn showproblem php pid 1058 开始拿到这个题目的时候还纠结了半天 英语很差的话这个题是不可能AC的 而我就是其中之一 Humber Numbe
  • spring-boot-maven-plugin报错的修改与版本号查看

    我报错的原因是因为没加版本号 版本号是多少 可以下个everything搜spring boot maven plugin 前面的号码就是版本号了
  • [转]出租车轨迹处理(二):时空分析

    接下来就要进行一些简单的分析了 今天的目标是如何对某一感兴趣区域进行出租车数据的时空分析 一 轨迹数据预处理 这一步在上一篇文章中已经有了介绍 步骤无非就是 1 使用pandas读取数据 import pandas as pd import