基于Python实现个人手机定位分析

news2024/9/21 16:39:28

TransBigData是一个为交通时空大数据处理、分析和可视化而开发的Python包。本文就来用它实现个人手机定位分析,感兴趣的小伙伴可以了解一下

但其实交通时空大数据并不仅仅局限于交通工具产生的数据,我们的日常生活中也会产生大量的数据。比如我们的手机记录了我们到访过的地点;使用城市公交IC卡、共享单车等服务时,服务供应商可以知道这些出行需求的时间和地点等等

本文作者依托《交通时空大数据分析、挖掘与可视化》一书中所介绍的相关技术开发了Python开源库TransBigData,进行一次对手机信令数据的处理、分析和挖掘。

TransBigData简介

TransBigData是一个为交通时空大数据处理、分析和可视化而开发的Python包。TransBigData为处理常见的交通时空大数据(如出租车GPS数据、共享单车数据和公交车GPS数据等)提供了快速而简洁的方法。

目前,TransBigData主要提供以下方法:

(1)数据预处理:对数据集提供快速计算数据量、时间段、采样间隔等基本信息的方法,也针对多种数据噪声提供了相应的清洗方法。

(2)数据栅格化:提供在研究区域内生成、匹配多种类型的地理栅格快学Python(矩形、三角形、六边形及geohash栅格)的方法体系,能够以向量化的方式快速算法将空间点数据映射到地理栅格上。

(3)数据可视化:基于可视化包keplergl,用简单的代码即可在Jupyter Notebook上交互式地可视化展示数据。

(4)轨迹处理:从轨迹数据GPS点生成轨迹线型,轨迹点增密、稀疏化等。

(5)地图底图、坐标转换与计算:加载显示地图底图与各类特殊坐标系之间的坐标转换。

(6)特定处理方法:针对各类特定数据提供相应处理方法,如从出租车GPS数据中提取订单起讫点,从手机信令数据中识别居住地与工作地,从地铁网络GIS数据构建网络拓扑结构并计算最短路径等。

TransBigData可以通过pip或者conda安装,在命令提示符中运行下面代码即可安装:

1

pip install -U transbigdata

安装完成后,在Python中运行如下代码即可导入TransBigData包。

1

import transbigdata as tbd  

手机信令数据读取

手机信令数据是指手机与通信基站之间交换的信息,包括位置、通信时长、通信频次等数据。这些数据可以用于分析用户的出行行为、生活习惯等,也可以用于城市交通管理、商业营销等领域。

使用Python开源库TransBigData可以快速高效地处理、分析、挖掘手机信令数据,识别出行和停留、居住地与工作地等信息,并绘制活动图以便于分析。

▲ 手机信令数据的采集原理

首先,我们将使用Python的pandas库来读取数据。Pandas是一款功能强大的数据处理库,它提供了灵活的数据结构和数据分析工具,可以轻松地对各种数据进行操作和分析。我们将使用Pandas读取包含手机信令数据的CSV文件,并将其存储在一个Pandas的数据框中。

我们需要将时间字段转换为正确的格式,以便进行后续的数据处理。我们使用Pandas的to_datetime函数将时间字段转换为datetime格式。然后后,我们按照时间顺序对数据进行排序,以便进行后续的数据处理:

1

2

3

4

5

6

7

import pandas as pd

import transbigdata as tbd

data = pd.read_csv(r'data/mobiledata_sample.csv')

#确保时间列准确识别(很重要)

data['stime'= pd.to_datetime(data['stime'], format='%Y%m%d%H%M')

data = data.sort_values(by = ['user_id','stime'])

data.head()

结果如下图所示。

▲ 手机信令数据概况

识别出行和停留

在处理手机数据时,识别出行和停留是很重要的一步。基于手机识别出行和活动可以进一步进行路径分析、出行模式分析、人群分析等工作。

活动:手机数据通过连续地追踪个体的出行轨迹,可以构建出个体的出行链信息,一般来说,如果一个手机用户在某个位置停留了超过30分钟,我们可以认为用户在这里发生了活动。

出行:用户产生的连续两个活动如果产生的地理位置不同,则可以认为用户发生了出行行为。出行的起点为连续两个活动中前一个活动的地理位置,出行的开始时间为前一个活动结束的时间,出行的终点则为后一个活动的地理位置,出行的结束时间则为后一个活动开始的时间。简而言之,用户在活动点与活动点之间的移动,视为用户的出行。

▲ 活动与出行识别思路

使用TransBigData提供的手机信令数据处理方法,可以先将数据对应至栅格,将同一个栅格内的数据视为在同一个位置,以避免数据定位误差导致同一位置被识别为多个。然后,可以使用tbd.mobile_stay_move函数从手机数据中识别出行和停留:

1

2

3

4

#获取栅格参数

params = tbd.area_to_params([121.86029.295121.86229.301], accuracy=500)

#从手机数据中识别出行和停留

stay,move = tbd.mobile_stay_move(data,params,col = ['user_id','stime','longitude''latitude'])结果如下所示。

▲ 停留识别结果

▲ 出行识别结果

识别居住地与工作地

通过移动通信数据识别出用户的职住信息是研究的基础工作之一。TransBigData中,以停留活动点为依据,用tbd.mobile_identify_home方法可以识别居住地,用tbd.mobile_identify_work则可以识别工作地。具体规则为:

  • 居住地识别规则为夜晚时段停留最长地点
  • 工作地识别规则为工作日白天时段停留最长地点(每日平均时长大于minhour)。

具体使用方法如下:

1

2

3

#识别居住地

home = tbd.mobile_identify_home(stay, col=['user_id','stime''etime','LONCOL''LATCOL','lon','lat'], start_hour=8, end_hour=20 )

home.head()

结果输出:

▲ 居住地识别

1

2

3

#识别工作地

work = tbd.mobile_identify_work(stay, col=['user_id''stime''etime''LONCOL''LATCOL','lon','lat'], minhour=3, start_hour=8, end_hour=20,workdaystart=0, workdayend=4)

work.head()

▲ 工作地识别结果

绘制活动图

为了加深对手机用户的具体活动情况的理解,我们可以用TransBigData提供的tbd.mobile_plot_activity方法将用户的每日活动情况绘制出来观察,具体代码如下:

1

2

3

#绘制某一用户的活动图,不同颜色代表不同活动

uid = 'fcc3a9e9df361667e00ee5c16cb08922'

tbd.mobile_plot_activity(stay[stay['user_id']==uid],figsize = (205))

输出结果:

▲ 单个用户的活动图

上图中绘制的是一个手机用户在观测时间段内每一天的活动情况,横坐标为日期,纵坐标为时间,同一个位置的活动则以同样的颜色显示。从活动图中我们可以很清晰地看到这个用户每一个活动的开始与结束时间。

到此这篇关于基于Python实现个人手机定位分析的文章就介绍到这了。

50G+学习视频教程
100+Python初阶、中阶、高阶电子书籍

点击拿去

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端 百度地图绘制路线加上图片

使用百度官方示例的方法根据起终点经纬度查询驾车路线但是只是一个线路 <template><div class"transportInfo"><div id"mapcontainer" class"map">11</div><div class"collapse"><el-collapse v-mo…

CA(证书颁发机构)

CA 根证书路径/csk-rootca/csk-ca.pem&#xff1b; ~ 签发数字证书&#xff0c;颁发者信息&#xff1a;(仅包含如下信息) C CN ST China L BeiJing O skills OU Operations Departments CN CSK Global Root CA 1.修改证书的路径以及相关配置 vi /etc/pki/tls/op…

el-upload文件上传组件的封装

样式1 样式2 上传的格式 // annexUrl 数据格式如下[{"uid": 1682329534561,"name": "2023/04/24/273f36b860a74e79be3faed3ce20236f.pdf","suffix": ".pdf","url": "http://192.168.0.254:19000/annex/2023/…

JVM系列(十) 垃圾收集器之 Parallel Scavenge/Old

上篇文章我们讲解了单线程垃圾收集器 Serial/SerialOld &#xff0c;与之相对应的多线程垃圾收集器就是 Parallel Scavenge/Old&#xff0c; 本文我们讲解下多线程垃圾收集器 Parallel Scavenge/Old 垃圾收集器 新生代收集器&#xff1a; Serial、ParNew、Parallel Scavenge&…

数据库 | 什么是视图?怎么使用?什么是索引?

目录 一、视图 1 、视图概念 2、为什么要使用视图 3 、性能问题 4 、定义视图 5、查看视图 6、删除视图 二、索引 1、引入索引的问题 2、索引是什么 3、索引为什么选择b树 一、视图 1 、视图概念 视图&#xff08;View&#xff09;是一种虚拟存在的表&#xff0c;对…

【DRF配置管理】如何建立完善的DRF自带接口docs文档

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 DRF应用和管理 【DRF配置管理】Django使用DRF框架 【DRF配置管理】如何实现JWT认证 【DRF配置管理】如何在视图函数配置参数(一) 【DRF配置管理】如何…

okcc呼叫问题的解决方法(建议收藏)

很多客户开始使用OKCC呼叫中心系统&#xff0c;运营经常遇到的问题是呼叫打不通&#xff0c;无话单&#xff0c;呼叫秒挂&#xff0c;语音提示"您没有使用业务的权限"等等异常情况&#xff0c;而且反馈线路正常&#xff0c;使用呼叫系统拨打就是呼不通。 OKCC系统…

史上最烂 spring aop 原理分析

盗引中篇spring aop spring aop: jdk 动态代理和 cglib 动态代理的特点、区别、使用方式、原理及各自对反射的优化、二者在 spring 中的统一、通知顺序、从 Aspect 到 Advisior、静态通知调用、动态通知调用。 版本 jdk&#xff1a;8spring&#xff1a;5.3.20spring boot&…

华为OD机试(20222023)真题目录 + 考点 + 复盘思路

大家好&#xff0c;我是哪吒。 本专栏包含了最新最全的华为OD机试真题&#xff0c;有详细的分析和Java代码解答。已帮助1000同学顺利通过OD机考&#xff0c;发现新题目&#xff0c;随时更新。 以下为华为OD机试真题题库。 1、华为OD机试真题&#xff08;Java&#xff09;&am…

创建型模式-原型模式

原型模式 介绍 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。具体原型类&#xff1a;实现抽象原型类的 cl…

Linux文本处理三大利器Grep、AWK、Sed

写在前面 Linux三剑客是文本处理工具&#xff0c;它们可以帮助我们快速、高效地对文本进行处理。其中包括了grep、awk、以及sed这三个强大的命令行工具。 Linux 三剑客主要作用: grep&#xff0c;它可以根据正则表达式查找相关内容并打印对应的数据。awk&#xff0c;它可以根…

redhat8配置vsftpd服务

目录 一、匿名访问模式 1.1、ftp服务器端修改配置&#xff08;配置文件&#xff1a;/etc/vsftpd/vsftpd.conf&#xff09; 1.2 修改ftp目录的权限 1.3 设置selinux服务对ftp服务的访问规则策略为允许 1.4 防火墙添加ftp服务 1.5 测试 二、本地用户模式 2.1 服务端修改配…

6、什么是类型断言?

虽然 TypeScript 很强大&#xff0c;但有时还不如我们了解一个值的类型方便&#xff0c;这时候我们更希望 TypeScript 不要帮我们进行类型检查&#xff0c;而是交给我们自己来&#xff0c;所以就用到了类型断言。类型断言有点像是一种类型转换&#xff0c;它把某个值强行指定为…

Vue收集表单数据学习笔记

收集表单数据 v-model双向数据绑定&#xff0c;收集的是input框的value&#xff0c;单选按钮不存在value&#xff0c;就像代码中的男女选项&#xff0c;即使绑定性别v-model“sex”&#xff0c;控制台依然不能接收性别的值&#xff0c;因为没有value值&#xff0c;&#xff0c…

python 第二章——数据类型详解

文章目录 前言一、什么是数据类型1.变量2.注释 二、数字三、字符串四、布尔五、列表六、元组七、集合八、字典总结 前言 本系列教程目录&#xff0c;可点击这里查看&#xff1a;Python教程目录 学习一门编程语言&#xff0c;第一件事就应该是熟练掌握这门编程语言的基本数据类…

[Java]JavaWeb开发中的MVC设计模式

一、有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet&#xff0c;如何编写jsp及如何更新浏览器中显示的内容。但是我们之前自己编写的应用一般存在无条理性&#xff0c;对于一个小型的网站这样的编写没有任何问题&#xff0c;但是一但…

MCDF代码详解,mcdf_rgm_pkg.sv代码超详细注释

寄存器模块代码详解 好戏开始: `include "param_def.v" package mcdf_rgm_pkg; import uvm_pkg::*; `include "uvm_macros.svh" import reg_pkg::*; //具有uvm_reg类型的专用寄存器描述[write-red-reg] class ctrl_reg extends uvm_r…

机器人教学中游戏化课程案例尝试

本文内容严格按创作模板发布&#xff1a; 2023年LPL春季赛季后赛正在火热进行中&#xff0c;你们心中的总冠军是哪支队伍呢&#xff1f;作为热爱游戏的程序猿&#xff0c;一起来聊聊你那些有意义的游戏开发经历吧&#xff01; 游戏化ROS机器人课程的优势有以下七点&#xff1a…

第3章-运行时数据区

此章把运行时数据区里比较少的地方讲一下。虚拟机栈&#xff0c;堆&#xff0c;方法区这些地方后续再讲。 转载https://gitee.com/youthlql/JavaYouth/tree/main/docs/JVM。 运行时数据区概述及线程 前言 本节主要讲的是运行时数据区&#xff0c;也就是下图这部分&#xff0c…

5.微服务项目实战---Gateway--服务网关,实现统一认证、鉴权、监控、路由转发等

5.1 网关简介 大家都都知道在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用 这么多的微服务呢&#xff1f;如果没有网关的存在&#xff0c;我们只能在客户端记录每个微服务的地址&#xff0c;然后分别去调用。 这样的架构&#xff0…