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

目录

  • 交通大数据与云计算测试 通过高德开放平台用出租车数据找出乘客上下车最频繁区域
    • 数据准备
    • 实现部分
      • 实验环境
      • 数据处思路
      • 导入 python 库
      • 提取数据
    • 利用高德地图实现经纬度数据可视化
      • 结果展示

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

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

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

下面是实现过程

数据准备

打开数据文件夹,如图所示
通过高德开放平台用出租车数据找出乘客上下车最频繁区域_第1张图片
用 notepad++ 打开其中一个文件,部分数据如图所示
通过高德开放平台用出租车数据找出乘客上下车最频繁区域_第2张图片

实现部分

实验环境

  • 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 文件,打开其中之一,如图所示
通过高德开放平台用出租车数据找出乘客上下车最频繁区域_第3张图片
下面是完整代码

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/

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

结果展示

通过高德开放平台用出租车数据找出乘客上下车最频繁区域_第9张图片
通过高德开放平台用出租车数据找出乘客上下车最频繁区域_第10张图片
通过高德开放平台用出租车数据找出乘客上下车最频繁区域_第11张图片
通过高德开放平台用出租车数据找出乘客上下车最频繁区域_第12张图片
通过高德开放平台用出租车数据找出乘客上下车最频繁区域_第13张图片
根据数据可视化地图可以得出上图区域乘客上下车最为频繁(我也没去过上海,不知道这里具体是哪里)
最后放上地图链接

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

感兴趣的朋友可以看一下

你可能感兴趣的:(交通大数据与云计算)