通过高德开放平台用出租车数据找出乘客上下车最频繁区域

交通大数据与云计算测试 通过高德开放平台用出租车数据找出乘客上下车最频繁区域

这次找到了一个非常好用的经纬度数据可视化平台:高德开放平台
先把我的结果放上来,有兴趣的朋友可以看一下

https://maplab.amap.com/share/mapv/be546112b05a1c22617f8bb603465435

下面是实现过程

数据准备

打开数据文件夹,如图所示
在这里插入图片描述
用 notepad++ 打开其中一个文件,部分数据如图所示
在这里插入图片描述

实现部分

实验环境

  • Win 10 64 位
  • Visual Studio Code 3.1
  • python 3.7.3

数据处思路

导入 python 库

import pandas as pd
import os

提取数据

提取文件夹中文件所有数据并将这些数据存入一个 list s

path = "data/Taxi_070220" #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称
s = []  #创建一个 list s 用来储存文件夹中文件的所有数据 
for file in files: #遍历文件夹
     if not os.path.isdir(file): #判断是否是文件夹,不是文件夹才打开
          f = open(path+"/"+file) #打开文件
          iter_f = iter(f) #创建迭代器
          for line in iter_f: #遍历文件,一行行遍历,读取文本
              s.append(line)#把每一个迭代出的 line 加到 list s 后面

迭代 list s 中数据,用亦或算法判断乘客下车位置,并将乘客下车位置的经纬度数据保存到 list gpslist

gpslist = []  #创建一个 list gps 存储 gps 数据
for i in range(1, len(s)):  #迭代 list s 中每一个元素
    if s[i][-2:] != s[i - 1][-2:]:  #判断 list s 中某个元素与前一个元素的最后两位值是否相等 (s[i][-2:]表示s[i]的最后两位)(即有无乘客上下车)
        strlist = s[i].split(',')  #按 "," 分割这个 list s 中的元素
        strr = ""  #创建一个字符串 strr 拼接经纬度用于对接高度地图
        strr = strlist[2] + "," + strlist[3]  #按经度+","+纬度进行拼接
        gpslist.append(strr)  #把经纬度 strr 加到 list gpslist 后
print(gpslist)  #打印 gpslist

现在经纬度信息已经存到 list gpslist 中了,因为高德地图的数据可视化的单个上传 csv 文件最多数据只能有 50000 条数据,所以把 gpslist 中的数据分成 4 list,并将 4 个 list 分别储存储存到 csv 文件

gpslist1 = []  #创建一个gpslist1用于分割gpslist(因数据量太大,高德地图只能上传数据量小于50000的csv文件)
gpslist2 = []  #创建一个gpslist2用于分割gpslist
gpslist3 = []  #创建一个gpslist3用于分割gpslist
gpslist4 = []  #创建一个gpslist4用于分割gpslist
gpslist1 = gpslist[1:50000]  #分割 gpslist 1-50000 条存入gpslist1
gpslist2 = gpslist[50001:100000]  #分割 gpslist 50001-100000 条存入gpslist2
gpslist3 = gpslist[100001:150000]  #分割 gpslist 100001-150000 条存入gpslist3
gpslist4 = gpslist[150001: len(gpslist)]  #分割 gpslist 150001-len(gpslist) 条存入gpslist4
name = ['经纬度']  #创建一个 list name 用于输出csv文件的列名,方便上传至高德地图
test1 = pd.DataFrame(columns=name, data=gpslist1)  #test1数据有一列,列名为经纬度
test2 = pd.DataFrame(columns=name, data=gpslist2)
test3 = pd.DataFrame(columns=name, data=gpslist3)
test4 = pd.DataFrame(columns=name, data=gpslist4)
test1.to_csv('result/gpscsv1.csv',encoding='utf-8',index=False)#把 test1 转成 csv 文件
test2.to_csv('result/gpscsv2.csv',encoding='utf-8',index=False)
test3.to_csv('result/gpscsv3.csv',encoding='utf-8',index=False)
test4.to_csv('result/gpscsv4.csv',encoding='utf-8',index=False)

现在已经生成了 4 个经纬度的 csv 文件,打开其中之一,如图所示
在这里插入图片描述
下面是完整代码

import pandas as pd
import os

path = "data/Taxi_070220" #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称
s = []  #创建一个 list s 用来储存文件夹中文件的所有数据 
for file in files: #遍历文件夹
     if not os.path.isdir(file): #判断是否是文件夹,不是文件夹才打开
          f = open(path+"/"+file) #打开文件
          iter_f = iter(f) #创建迭代器
          for line in iter_f: #遍历文件,一行行遍历,读取文本
              s.append(line)#把每一个迭代出的 line 加到 list s 后面
gpslist = []  #创建一个 list gps 存储 gps 数据
for i in range(1, len(s)):  #迭代 list s 中每一个元素
    if s[i][-2:] != s[i - 1][-2:]:  #判断 list s 中某个元素与前一个元素的最后两位值是否相等 (s[i][-2:]表示s[i]的最后两位)(即有无乘客上下车)
        strlist = s[i].split(',')  #按 "," 分割这个 list s 中的元素
        strr = ""  #创建一个字符串 strr 拼接经纬度用于对接高度地图
        strr = strlist[2] + "," + strlist[3]  #按经度+","+纬度进行拼接
        gpslist.append(strr)  #把经纬度 strr 加到 list gpslist 后
print(gpslist)  #打印 gpslist
gpslist1 = []  #创建一个gpslist1用于分割gpslist(因数据量太大,高德地图只能上传数据量小于50000的csv文件)
gpslist2 = []  #创建一个gpslist2用于分割gpslist
gpslist3 = []  #创建一个gpslist3用于分割gpslist
gpslist4 = []  #创建一个gpslist4用于分割gpslist
gpslist1 = gpslist[1:50000]  #分割 gpslist 1-50000 条存入gpslist1
gpslist2 = gpslist[50001:100000]  #分割 gpslist 50001-100000 条存入gpslist2
gpslist3 = gpslist[100001:150000]  #分割 gpslist 100001-150000 条存入gpslist3
gpslist4 = gpslist[150001: len(gpslist)]  #分割 gpslist 150001-len(gpslist) 条存入gpslist4
name = ['经纬度']  #创建一个 list name 用于输出csv文件的列名,方便上传至高德地图
test1 = pd.DataFrame(columns=name, data=gpslist1)  #test1数据有一列,列名为经纬度
test2 = pd.DataFrame(columns=name, data=gpslist2)
test3 = pd.DataFrame(columns=name, data=gpslist3)
test4 = pd.DataFrame(columns=name, data=gpslist4)
test1.to_csv('result/gpscsv1.csv',encoding='utf-8',index=False)#把 test1 转成 csv 文件
test2.to_csv('result/gpscsv2.csv',encoding='utf-8',index=False)
test3.to_csv('result/gpscsv3.csv',encoding='utf-8',index=False)
test4.to_csv('result/gpscsv4.csv',encoding='utf-8',index=False)

至此,数据处理基本完成。

利用高德地图实现经纬度数据可视化

下面是高德开发平台的网址(也可自己搜索)

https://lbs.amap.com/

然后在高德开发平台注册并登陆,登陆成功后来到控制台,点击数据可视化后,如图
在这里插入图片描述
点击右上方创建可视化项目
在这里插入图片描述
点击数据接入,并上传数据
在这里插入图片描述
选择 “点类型” 下拉点击 “下一步”
在这里插入图片描述
点击确定,等待一会,数据量较大,可能会有点慢
在这里插入图片描述
这样数据可视化就成功了,不过不太美观,我们把它优化一下
背景地图选择“极夜蓝”
添加标题组件,并输入标题
并更改数据可视化点的颜色和大小
数据覆盖选择“变亮”,这样可以比较清晰的得出有较多乘客下车的区域,数据越多会越亮
并将其他几个 csv 数据文件添加上去

结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据数据可视化地图可以得出上图区域乘客上下车最为频繁(我也没去过上海,不知道这里具体是哪里)
最后放上地图链接

https://maplab.amap.com/share/mapv/be546112b05a1c22617f8bb603465435

感兴趣的朋友可以看一下

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LouHerGetUp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值