当前位置: 首页 > 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;例如学习率、批大小、迭代次数、网络结构等等。选择…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...