这次找到了一个非常好用的经纬度数据可视化平台:高德开放平台
先把我的结果放上来,有兴趣的朋友可以看一下
https://maplab.amap.com/share/mapv/be546112b05a1c22617f8bb603465435
下面是实现过程
打开数据文件夹,如图所示
用 notepad++ 打开其中一个文件,部分数据如图所示
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
感兴趣的朋友可以看一下