社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python处理手机信令数据制作OD图

GISer last • 1 周前 • 21 次点击  
温馨提示:没有设置星标的小伙伴可能会收不到文章的推送信息,欢迎各位新老朋友给【hello trans】加个星标,以便及时获得最新推文,感谢支持。

本篇内容主要介绍下如何将手机信令数据进行处理,最后绘制成OD图。

一个典型的手机信令数据记录可能包含如下字段:

  • Event Type:事件类型(如呼叫开始、位置更新等)。
  • Timestamp:事件发生的时间戳。
  • IMSI:用户的国际移动用户识别码。
  • MSISDN:用户的手机号码。
  • LAC/TAC:位置区域码/追踪区域码。
  • Cell ID:基站的小区ID。
  • CGI:全球小区标识符。
  • Latitude:基站的纬度坐标。
  • Longitude:基站的经度坐标。
  • Duration:对于通话事件,记录通话持续时间。
  • Call/SMS Direction:对于通话或短信事件,记录是发出还是接收。
  • Data Volume:对于数据会话事件,记录使用的数据量

由于原始的手机信令数据通常包含敏感的个人信息,因此在进行研究或商业应用之前,通常需要对数据进行脱敏处理,比如去除或加密个人身份信息,以保护用户的隐私。

关于手机信令数据的结构就不多做赘述,简单而言就是身份编号、时间、地点记录了某个人某个时间在某个地点。

为了便于演示手机信令数据的操作,这里分享一位大佬的个人网站,里面有开源的手机信令数据,同时也包含了出租车、公交车GPS数据。

网址:

https://people.cs.rutgers.edu/~dz220/data.html

这个数据集的手机信令数据结构如下:

第一列是经过处理的唯一标识、第二列是时间、第三列是经纬度信息。数据为txt文件,1.5GB,共16亿行。

这个量级的数据,我的小霸王电脑着实吃不消。为了演示方便,将该文件进行拆分。

定义了一个函数,第一个参数就是要处理的文件名,第二个参数是输出文件的前缀,第三个参数是拆分的份数。拆分后每个文件的大小变为了157MB左右。

然后,以第一个拆分数据为例进行处理。想要得到OD,首先需要提取出行链,先对第一列的编号ID进行排序,然后在第一列排序的基础上再对第二列的时间进行排序。

排序完成后,同一编号,按照时间顺序的经纬度信息就非常明显地体现出出行者的出行轨迹。由于该数据集的时间只记录了一天,因此直接提取同一编号下的开始时间、开始的经纬度、结束的时间、结束的经纬度。

最后结果如下:

第一列是ID,第二列是开始时间,第三、四列是开始的经纬度,第五列是结束的时间,第六、七列是结束的经纬度。
为了展示效果,这里推荐一个可视化的网:
  https://ni1o1.github.io/ODview/build/
B站up主小旭学长开发,可以对OD数据进行快速可视化,效果美观。

需要注意的是,经纬度信息需要设置正确,然后count这里设置为1。以下是可视化的效果:

代码获取方式:点击左下角【阅读原文】,即可跳转至下载链接。欢迎大家评论区留言,沟通交流,共同进步。

感谢阅读本期内容,如果您觉得有帮助,动动您的手指头,【点赞】+【在看】,这是对我最大的支持和鼓励,非常感谢!!!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/178321
 
21 次点击