交通信息大数据分析

实验数据

    本实验所用数据为江苏省南京市出租车的GPS位置数据,包含了7,726辆出租车的共33,042,225条位置记录,各字段以制表符分隔。建议上传至HDFS与Hive进行分析处理。

各字段定义

字段 定义
VehicleId 出租车标识符
Time 数据收集时间
Longitude 经度
Latitude 纬度
Speed 速度,以千米/小时计
Direction 方向,与正北方向的夹角度数
PassengerState 载客状态,1为载客,0为空车

需求分析

统计每小时在运营的出租车数量

统计每小时出租车的载客情况

统计每小时出租车的利用率

统计每小时载客出租车的平均车速

可视化瞬时租车载客情况的地理信息图

可视化载客出租车瞬时速度的地理信息图

代码演示

数据演示

#数据进行预处理,python,pandas
import pandas as pd
import numpy as np
file_name = 'gps.csv'   
df = pd.read_csv(file_name, names=range(7) ,header=None ,sep='\t',encoding='utf-8') 
df.columns = ['VehicleId', 'Time','Longitude','Latitude','Speed','Direction','PassengerState']#添加列名
df.head(10)

image

数据规模

df.shape
(33042225, 7)

数据类型

df.info()
Column Dtype
VehicleId int64
Time object
Longitude float64
Latitude float64
Speed int64
Direction int64
PassengerState int64

查看缺失值

## #查看缺失值
df.isnull().sum()
Column Num
VehicleId 0
Time 0
Longitude 0
Latitude 0
Speed 0
Direction 0
PassengerState 0
dtype int64

可视化处理

import missingno as miss  #预处理可视化库
miss.bar(df)

image

数据处理

Hour,names,y,y1 = [],[],[],[]
for i in range(24):
    names.append(i)
    y.append(0)
    y1.append(0)
for index, row in df.iterrows():
    a, b = str(row['Time']).split(' ')
    hour,minu,sec = map(int,b.split(':')) 
    Hour.append(hour)
    if row['PassengerState'] == 1:
        y1[hour] += 1  #在载客出租车总数
    y[hour] += 1  #运营出租车总数
df['Hour'] = Hour

查看修改

df.head(10)

image

出租车运营比

# encoding=utf-8
import matplotlib.pyplot as plt
from pylab import *         #支持中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
x = range(len(names))
plt.plot(x, y, marker='o', mec='r', mfc='w',label=u'运营出租车数量')
plt.plot(x, y1, marker='*', ms=10,label=u'载客出租车数量')
plt.legend() # 让图例生效
plt.xticks(x, names, rotation=45)
plt.margins(0)
plt.subplots_adjust(bottom=0.15)
plt.xlabel(u"Hour") #X轴标签
plt.ylabel("车辆数") #Y轴标签
plt.title("出租车运营图") #标题
plt.show()

image

出租车利用率

ans = []
for i in range(24):
    ans.append(y1[i]/y[i])
plt.plot(x, ans, marker='o', ms=10,label=u'载客运营比')
plt.legend() # 让图例生效
plt.xticks(x, names, rotation=45)
plt.margins(0)
plt.subplots_adjust(bottom=0.15)
plt.xlabel(u"时间") #X轴标签
plt.ylabel("载客运营比") #Y轴标签
plt.title("出租车利用率") #标题
plt.show()

image

posted @ 2022-05-29 09:11  anyiya  阅读(134)  评论(1编辑  收藏  举报