当前位置: 首页 > news >正文

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

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初阶、中阶、高阶电子书籍

点击拿去

相关文章:

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

TransBigData是一个为交通时空大数据处理、分析和可视化而开发的Python包。本文就来用它实现个人手机定位分析,感兴趣的小伙伴可以了解一下 但其实交通时空大数据并不仅仅局限于交通工具产生的数据,我们的日常生活中也会产生大量的数据。比如我们的手机…...

Unity Navgation系统杂记

立即停止寻路 使用agent.isStoppedtrue,可以停止寻路,但是有很大的延迟,视觉体验很不好。 使用agent.enabledfalse,通过禁用NavMeshAgent组件的方式实现立即停止寻路。因为组件被禁用可能会产生其它问题,比如失去了Ob…...

[2021.11.9]lighteffect架构优化详细设计文档

1 lighteffect系统架构图 图1-1 整改前lighteffect系统架构图 上图为整改前lighteffect系统架构图,存在的问题如下: (1)代码bug 原因:由于系统中兼容了lighteffect和lighteffect2,写代码时只记了一个,出现代码bug。…...

经典回归算法

回归的概念 回归方程: 写成矩阵: 核心问题,构建预测函数z来映射特征矩阵x和标签y的线性关系 预测的目标值,有连续值也有离散值 连续值,就直接预测输出就行离散值,需要在输出端加一个变换函数例如。Si…...

Python两三行代码轻松批量添加~防韩还是很有必要的~

人生苦短,我用python 一直想做一个这种系列的但是因为七七八八的事情总是忘记, 今天正好有空,来开整一下~ 首先, 天冷防韩是什么梗? 【天冷防韩】 “天冷防韩”是“天冷防寒”的谐音, 不过“寒”指的…...

开心消消乐

给定一个 N 行 M 列的二维矩阵,矩阵中每个位置的数字取值为 0 或 1,矩阵示例如: 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 现需要将矩阵中所有的 1 进行反转为 0,规则如下: 当点击一个 1 时,该 1 被反转为 0&am…...

有效日志管理在软件开发和运营中的作用

作者:Luca Wintergerst, David Hope, Bahubali Shetti 当今存在的快速软件开发过程需要扩展和复杂的基础架构和应用程序组件,并且操作和开发团队的工作不断增长且涉及多个方面。 有助于管理和分析遥测数据的可观察性是确保应用程序和基础架构的性能和可靠…...

【五一创作】【笔记】Git|如何将仓库中所有的 commit 合成一个?又名,如何清除所有 git 提交记录?(附 git rebase 机制的简要分析)

在对代码进行开源时,我们往往并不希望代码开发过程中的提交记录被其他人看到,因为提交的过程中往往会涵盖一些敏感信息。因此会存在 将仓库中所有 commit 合成一个 的需求。 直觉上,往往会用 rebase 和 squash 或 reset,不过我尝…...

如何写出高质量代码?

作为一名资深开发人员,写出高质量的代码是我们必须要追求的目标。然而,在实际开发中,我们常常会遇到各种问题。比如,代码的可读性、可维护性、健壮性和灵活性等,这些都会影响代码的质量。那么,究竟如何才能…...

外卖项目优化-01-redis缓存短信验证码、菜品数据、Spring Cache(注解开发缓存)、(注解开发)缓存套餐数据

文章目录 外卖项目优化-01课程内容前言1. 环境搭建1.1 版本控制解决branch和tag命名冲突 1.2 环境准备 2. 缓存短信验证码2.1 思路分析2.2 代码改造2.3 功能测试 3. 缓存菜品信息3.1 实现思路3.2 代码改造3.2.1 查询菜品缓存3.2.2 清理菜品缓存 3.3 功能测试3.4 提交并推送代码…...

Chapter1:控制系统数学模型(下)

第一章:控制系统数学模型 Exercise1.13 已知控制系统结构图如下图所示,求系统的输出 C 1 ( s ) C_1(s) C...

排序算法总结

常见排序算法的时间复杂度、空间复杂度及稳定性分析: 时间复杂度空间复杂度是否有稳定性基于比较的排序算法选择排序 O(N^2)O(1)否 冒泡排序O(N^2)O(1)是插入排序O(N^2)O(1)是归并排序O(N*logN)O(N),每次需要额外一个数组用于拷贝是快排O(N*log…...

java+jsp企业物流货运快递管理系统servlet

功能需求具体描述: (1)用户功能模块包括用户登录注册,用户信息的修改,用户发布货物信息,给客服人员留言,对运输公司进行评价。 (2)企业功能模块包括企业注册登录,企业信息的修改,受理用户发布的…...

【ROS仿真实战】获取机器人在gazebo位置真值的三种方法(三)

文章目录 前言一. 使用ROS tf库二、 使用Gazebo Model Plugin三、 使用libgazebo_ros_p3d插件四、总结 前言 在ROS和Gazebo中,获取机器人的位置信息通常通过ROS消息传递进行。在这篇文章中,我们将介绍三种获取机器人在Gazebo中位置真值的方法&#xff1…...

Winform从入门到精通(35)——FontDialog(史上最全)

文章目录 前言一、属性1、Name2、AllowScriptChange3、AllowSimulations4、AllowVectorFonts5、AllowVerticalFonts6、Color7、FixedPitchOnly8、Font9、FontMustExist10、MaxSize11、MinSize12、 ScriptsOnly13、ShowApply14、ShowColor15、ShowEffects16、ShowHelp...

AcWing 854. Floyd求最短路Floyd模板

Floyd算法: 标准弗洛伊德算法,三重循环,基于动态规划。 循环结束之后 d[i][j]存储的就是点 i 到点 j 的最短距离。 需要注意循环顺序不能变:第一层枚举中间点,第二层和第三层枚举起点和终点。 特点: 1.复杂…...

Graph Theory(图论)

一、图的定义 图是通过一组边相互连接的顶点的集合。 In this graph, V { A , B , C , D , E } E { AB , AC , BD , CD , DE } 二、图的类型 2.1 Finite Graph A graph consisting of finite number of vertices and edges is called as a finite graph. Null Graph Tri…...

[Python]生成 txt 文件

前段时间有位客户问: 你们的程序能不能给我们生成个 txt 文件,把新增的员工都放进来,字段也不需要太多,就要 员工姓名/卡号/员工编号/员工职位/公司 这些字段就行了,然后我们的程序会去读取这个 txt 文件,拿里面的内容,读完之后会这个文件删掉 我: 可以接受延迟吗?可能没办法实…...

GeoTools实战指南: 自定义矢量样式并生成截图

GeoTools实战指南: 自定义矢量样式并生成截图 介绍 本段代码的主要功能是将矢量数据(Shapefile)渲染成一张图片。 准备环境 首先,您需要将GeoTools库添加到您的项目中。使用Maven或Gradle添加依赖项,或者直接下载GeoTools的jar文件并添加到您的类路径中。 Maven <…...

深度学习超参数调整介绍

文章目录 深度学习超参数调整介绍1. 学习率2. 批大小3. 迭代次数4. 正则化5. 网络结构总结 深度学习超参数调整介绍 深度学习模型的性能很大程度上取决于超参数的选择。超参数是指在训练过程中需要手动设置的参数&#xff0c;例如学习率、批大小、迭代次数、网络结构等等。选择…...

Android 性能优化:内存泄漏排查与解决

Android性能优化&#xff1a;内存泄漏排查与解决 在Android开发中&#xff0c;性能优化是提升用户体验的关键环节&#xff0c;而内存泄漏则是常见却容易被忽视的问题。内存泄漏会导致应用占用内存持续增加&#xff0c;最终引发卡顿、崩溃甚至被系统强制终止。如何高效排查与解…...

Flash存储、外设操作与系统架构

课程目标与知识体系 课程目的 掌握STM32内部Flash读写操作 熟悉STM32存储器映射 了解malloc动态内存分配 理解STM32启动流程与地址空间知识点体系STM32系统架构 ├── 外设操作&#xff08;GPIO/USART/DMA&#xff09; ├── 存储器系统 │ ├── 存储器分类 │ ├── 存储…...

手把手调试Linux DRM:如何用ftrace和debugfs深入connector的生命周期

深入Linux DRM调试&#xff1a;用ftrace与debugfs剖析connector全生命周期 当一块崭新的显示板卡接入系统时&#xff0c;DRM驱动中的connector如同一位尽职的接线员&#xff0c;负责建立显示设备与内核之间的通信桥梁。但在实际开发中&#xff0c;我们常会遇到热插拔检测失灵、…...

别再手动改MTL文件了!一个Python脚本搞定ENVI打开Landsat 8/9 L2影像的报错问题

用Python自动化修复Landsat L2影像的ENVI兼容性问题 遥感数据处理中&#xff0c;Landsat 8/9的L2级别影像在ENVI软件中打开时经常遇到兼容性问题。传统的手动修改MTL文件方法不仅效率低下&#xff0c;还容易出错。本文将介绍一个Python自动化解决方案&#xff0c;帮助您彻底摆脱…...

ESP8266轻量Web服务器库myWebServerESP深度解析

1. myWebServerESP&#xff1a;面向ESP8266/NODEMCU的轻量级嵌入式Web服务器库深度解析1.1 项目定位与工程价值myWebServerESP是一个专为 ESP8266 系列芯片&#xff08;含 NodeMCU 开发板&#xff09;设计的轻量级、可配置 Web 服务框架&#xff0c;运行于 Arduino IDE 生态下。…...

解锁RePKG的7个实战维度:从资源提取到合规创作的完整指南

解锁RePKG的7个实战维度&#xff1a;从资源提取到合规创作的完整指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 一、问题象限&#xff1a;资源处理的真实困境叙事 1.1 独立游…...

Windows Cleaner终极指南:三步解决C盘爆红,让电脑重获新生

Windows Cleaner终极指南&#xff1a;三步解决C盘爆红&#xff0c;让电脑重获新生 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 当你的C盘进度条变成刺眼的红色…...

基于SpringBoot+Vue的招生宣传管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

&#x1f4a1;实话实说&#xff1a;用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否&#xff0c;咱们都是朋友&#xff0c;能帮的地方我绝不含糊。买卖不成仁义在&#xff0c;这就是我的做人原则。摘要 随着教育信息化的快速发展&#xff0c;高校招生宣…...

3步实现Axure RP本地化界面优化:开源工具助力中文设计环境构建

3步实现Axure RP本地化界面优化&#xff1a;开源工具助力中文设计环境构建 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-c…...

科学可视化入门:用OptiX 9.0 + SDL2 + OpenGL搭建你的第一个实时渲染窗口

科学可视化实战&#xff1a;从零构建OptiX 9.0实时渲染系统 光线追踪技术正在重塑科学可视化的未来。想象一下&#xff0c;你能够实时操控分子结构中的每一个原子&#xff0c;或者让宇宙射线在指尖流淌——这正是OptiX 9.0与SDL2/OpenGL组合带来的可能性。本文将带你跨越理论到…...