关于算法:matlab数据可视化交通流量分析天气条件共享单车时间序列数据

64次阅读

共计 5799 个字符,预计需要花费 15 分钟才能阅读完成。

 原文链接:http://tecdat.cn/?p=24121 

此示例阐明如何应用从传感器取得的数据分析共享单车交通模式,来预处理带工夫戳的数据。数据来自传感器。

此示例展现了如何执行各种数据清理、调整和预处理工作,例如删除缺失值和同步具备不同工夫步长的工夫戳数据。此外,突出显示数据摸索,包含应用timetable 数据容器的可视化和分组计算:

  • 摸索日常自行车交通
  • 将自行车交通与当地天气条件进行比拟
  • 剖析一周中不同天数和一天中不同工夫的自行车流量

将自行车交通数据导入时间表

从逗号分隔的文本文件中导入自行车交通数据示例。应用该head 函数显示前八行。

head(bkTb)

数据有工夫戳,方便使用时间表来存储和剖析数据。时间表相似于表,但包含与数据行关联的工夫戳。工夫戳或行工夫由datetime 或 duration 值示意。datetime 和 duration 别离是用于示意工夫点或通过工夫的举荐数据类型。

转换 为时间表。您必须应用转换函数,因为 readtable 返回一个表。行工夫是标记行的元数据。然而,当您显示时间表时,行工夫和时间表变量以相似的形式显示。请留神,该表有五个变量,而时间表有四个。

 tabe2tmeabe(biel);

拜访工夫和数据

Day 变量转换 为分类变量。分类数据类型专为蕴含无限离散值集的数据而设计,例如一周中的日期名称。列出类别,以便它们按天程序显示。应用点下标按名称拜访变量。

在时间表中,工夫与数据变量离开解决。拜访 Properties 时间表的 显示行工夫是时间表的第一维,变量是第二维。该 DimensionNames 属性显示两个维度的名称,而该 VariableNames 属性显示沿第二个维度的变量的名称。

bkDta.Poetis

 

默认状况下,在将表转换为时间表时 table2timetable 指定 Timestamp 为第一个维度名称,因为这是原始表中的变量名称。您能够通过 Properties.

将维度的名称更改为 Time 和 Data

DmesiNams = {'Time' 'Data'};

显示时间表的前八行。

确定最晚和最早的行工夫之间通过的天数。一次援用一个变量时,能够通过点表示法拜访这些变量。

lpsTie = max(bkeDa.Tme) - min(bkData.me)

要查看特定日期的典型自行车数量,请计算自行车总数以及向西和向东行驶的数量的平均值。

通过对bikeData 应用大括号的内容进行索引,将数字数据作为矩阵返回。显示前八行。应用标准表下标拜访多个变量。

cs(1:8,)

因为均值仅实用于数值数据,因而您能够应用该 vartype 函数来抉择数值变量。vartype 比手动索引到表或时间表以抉择变量更不便。计算平均值并疏忽 NaN 值。

mean(cots,'omitn')

按日期和工夫抉择数据

要确定假期期间有多少人骑自行车,请查看 7 月 4 日假期的数据。按  7 月 4 日的行工夫索引时间表。当您索引行工夫时,必须齐全匹配工夫。能够将工夫索引指定为 datetime 或 duration 值,或者指定为能够转换为日期和工夫的字符向量。能够屡次指定为数组。

bikeData 应用特定日期和工夫进行索引 以提取 7 月 4 日的数据。如果仅指定日期,则假设工夫为午夜或 00:00:00。

d = {'208:00:00','09:00:00'};
bieDta(d,:)

应用这种策略来提取一整天会很麻烦。您还能够指定工夫范畴而不对特定工夫进行索引。创立工夫范畴下标,应用 timerange 函数。

应用  7 月 4 日一整天的工夫范畴在时间表中下标。指定开始工夫为 7 月 4 日午夜,完结工夫为 7 月 5 日午夜。默认状况下,timerange 涵盖从开始工夫开始的所有工夫和直到但不包含完结工夫。绘制一天中的自行车数量。

jul4 = bikeData(tr,'Total');
hea(jl4)


bar(4Tie,jl4otl)

从图中能够看出,全天成交量更大,下午趋于平稳。因为许多企业都关门了,所以图中没有显示通勤工夫的典型交通状况。早晨晚些时候的峰值可归因于在早晨的庆贺流动。为了更认真地查看这些趋势,应将数据与典型日子的数据进行比拟。

将 7 月 4 日的数据与 7 月其余工夫的数据进行比拟。

plot(jul.Time,ju.Toal)
hold o
plot(jl.Tme,ju4.otal)

该图显示了工作日和周末之间交通差别的变动。7 月 4 日和 5 日的交通模式与周末交通模式统一。通过进一步的预处理和剖析,能够更认真地查看这些趋势。

预处理工夫和数据应用 timetable

带工夫戳的数据集通常很凌乱,可能蕴含异样或谬误。时间表非常适合解决异样和谬误。

时间表的行工夫不用按任何特定顺序排列。它能够蕴含未按行工夫排序的行。时间表还能够蕴含具备雷同行工夫的多行,只管这些行能够具备不同的数据值。即便行工夫已排序且惟一,它们也可能因不同大小的工夫步长而不同。时间表甚至能够蕴含 NaT 或 NaN 值来批示缺失的行工夫。

该 timetable 数据类型提供了许多不同的形式解决失踪,复制或不平均倍。您还能够从新采样或汇总数据以创立 _定期_ 时间表。当时间表是规定的时,它的行工夫是通过排序且惟一的,并且在它们之间具备对立或平均区间的工夫步长。

  • 要查找缺失的行工夫,请应用 ismissing.
  • 要删除缺失的工夫和数据,请应用 rmmissing.
  • 要按行工夫对时间表进行排序,请应用 sortrows
  • 要生成具备惟一且已排序的行工夫的时间表,请应用 unique 和 retime
  • 要生成惯例时间表,请指定平均区间的工夫向量并应用 retime

按工夫程序排序

确定时间表是否已排序。如果时间表的行工夫按升序列出,则该时间表已排序。

issorted(bikeData)

对时间表进行排序。该 sortrows 函数按行工夫对行进行排序,从最早到最晚。如果存在具备反复行工夫的行,则将 sortrows 所有反复项复制到输入。

bikeData = sortrows(bikeData);
issorted(bikeData)

辨认和删除缺失的工夫和数据

时间表的变量或其行工夫中可能短少数据批示符。例如,您能够将缺失的数值示意为 NaNs,将缺失的日期工夫值示意为 NaTs。您能够调配,查找,删除,并用填充缺失值 standardizeMissingismissingrmmissing,和 fillmissing 性能。

查找并计算时间表变量中的缺失值。在此示例中,缺失值示意未收集数据的状况。

ismssng(bieDa);
sum(isata)

来自的输入 ismissing 是一个 logical 矩阵,与表的大小雷同,将缺失的数据值标识为真。显示短少数据批示符的任何行。

any(misDta,2);

 

 仅查找时间表变量中的缺失数据,而不是工夫。要查找缺失的行工夫,请调用 ismissing 工夫。

ismisig(bikDa.time);

在本例中,缺失工夫或数据值示意测量谬误,能够排除。应用 删除表中蕴含缺失数据值和缺失行工夫的行 rmmissing

rmising(bieDaa);

miissing(ieDta.Time)

 

删除反复的工夫和数据

确定是否有反复的工夫和 / 或反复的数据行。您可能心愿排除反复项,因为这些也能够被视为测量误差。通过查找排序工夫之间的差别恰好为零的地位来辨认反复工夫。

idx = diff(biDat.Tme) == 0;
dup = biDaime(idx)

反复三次,11 月 19 日反复两次。查看与反复次数相干的数据。

第一个有反复的次数但没有反复的数据,而其余的则齐全反复。当时间表行在行中蕴含雷同的行工夫和雷同的数据值时,它们被视为反复。您能够应用 unique 删除时间表中的反复行。该 unique 函数还按行工夫对行进行排序。

bkeata = unique(biketa);

具备反复工夫但非反复数据的行须要一些解释。查看那些工夫前后的数据。

在这种状况下,因为数据和四周工夫是统一的,因而反复工夫可能是谬误的。尽管它仿佛代表 01:00:00,但不确定这应该是什么工夫。能够累积数据以阐明两个工夫点的数据。

sum(Dta{dup(1),2:end})

这只是一种能够手动实现的状况。然而,对于许多行,该 retime 函数能够执行此计算。应用sum 聚合函数对惟一次数的数据进行累加。总和实用于数字数据,但不适用于时间表中的分类数据。应用 vartype 标识数值变量。

您不能对分类数据求和,但因为一个标签代表一整天,因而取每一天的第一个值。您能够retime 应用雷同的工夫向量再次执行 操作并将时间表连贯在一起。

cata = retme(ikat(:,vc,t,'frtvle');

查看工夫区间的平均性

数据仿佛具备一小时的对立工夫步长。要确定时间表中的所有行工夫是否都如此,应用该 isregular 函数。isregular 返回 true 有序的、平均区间的工夫(枯燥递增),没有反复或失落的工夫(NaT 或 NaN)。

0或 的输入 false表明时间表中的工夫区间不平均。更具体地摸索工夫区间。

\[min(dt); max(dt)\]

要将时间表置于固定工夫区间,请应用 retime 或 synchronize 并指定感兴趣的工夫区间。

确定每日自行车量

应用该retime 函数确定每天的计数。应用该sum 办法累积每天的计数数据。这实用于数值数据,但不适用于时间表中的分类数据。用于 vartype 按数据类型标识变量。

如上所述,您能够retime 再次执行 操作以应用适当的办法示意分类数据并将时间表连贯在一起。

dantat = rtime(bkeat(:,vc),'dily','firtau');

 

比拟自行车数量和天气数据

通过将自行车数量与天气数据进行比拟,查看天气对骑行行为的影响。加载天气时间表,其中包含来自历史天气数据,包含暴风雨事件。

要汇总时间表中的工夫和变量,请应用 summary 函数。

summary(wetherta)

应用 将自行车数据与天气数据组合成一个工夫向量 synchronize。您能够应用synchronize 从新采样或聚合时间表数据。

将两个时间表中的数据同步到一个公共工夫向量,该工夫向量是从它们各自的每日工夫向量的交加构建的。

 syhrone(dayout,wethrDta,'inseon';

比拟独自 y 轴上的自行车交通数量和室外温度来查看趋势。从数据中删除周末进行可视化。

yyaxis left
plot(wekata.Time, ekdaaa.Tol)
yyaxis right

该图显示交通和天气数据可能遵循相似的趋势。

趋势类似,表明在凛冽的日子里骑自行车的人更少。

按星期几和一天中的工夫剖析

依据不同的工夫区间(例如星期几和一天中的工夫)检查数据。应用varfun 对变量执行分组计算来确定每天的总计数。sum 应用名称 - 值对指定 具备函数句柄和分组变量和首选输入类型的函数。

bDa = varn(suket,'GpigVrles','Day',...
             'Otpuoat''tale')


fgue
bar(by{:,{'smestund',sumEbound'}})

条形图示意工作日的交通量较大。此外,东行和西行方向也有所不同。这可能表明人们在进出城市时往往会抉择不同的路线。另一种可能是,有些人一天进去,另一天回来。

确定一天中的小时 varfun 用于按组计算。

varn(@mean,bketa(:,{'Wesbund','Estund','HfDay'}),...
    'GrunVabes','fDay','Outputrmat','te');


bar(byr})

在典型的通勤工夫(上午 9:00 和下午 5:00 左右)呈现交通顶峰。此外,东行和西行方向之间的趋势不同。一般来说,西行方向是朝向地区四周的住宅区和大学。东行方向是朝向市中心。

与东行方向相比,当天晚些时候西行方向的交通量更大。因为该地区的餐馆,这可能表明大学的时间表和交通。按星期几和一天中的小时查看趋势。

byra = varfun(@mikaa,'Grpiaibes',{'HOfDay','ay'},...
    'OuutFort','tbl')

要安顿时间表以便将一周中的几天作为变量,请应用该 unstack 函数。

hrnaWk = unstack(byD(:,{HrOfa','ay','u_Toal'),smTota','Da'); 
ribbon(hrnaW)

周一至周五的失常工作日也有相似的趋势,顶峰时段呈现顶峰,早晨交通逐步缩小。周五的交易量较少,但总体趋势与其余工作日类似。周六和周日的趋势彼此类似,没有顶峰时段,但在当天晚些时候成交量更大。周一至周五的深夜趋势也类似,周五成交量较少。

剖析顶峰时段的交通

要查看一天中的总体工夫趋势,请按顶峰工夫拆分数据。应用discretize 能够应用一天中的不同工夫或工夫单位。例如,将数据分成 AMAMRushDayPMRush、的组 PM。而后用于 varfun 按组计算平均值。

brBn = varfun(@mean,beData:{'Toa','HLbel'})','Hbel',...'Otpuorat',le)

bar(brBn.en)

一般来说,与一天中的其余工夫相比,该区域在黄昏和早顶峰时段的交通量大概是该区域的两倍。该区域凌晨车流量很少,但黄昏和深夜的车流量依然很大,堪比早晚顶峰时段以外的白天。


最受欢迎的见解

1. R 语言动态图可视化:如何、创立具备精美动画的图

2.TABLEAU 的骑行路线天文数据可视化

3. 用数据通知你出租车资源配置是否正当

4.R 语言 GGMAP 空间可视化机动车交通事故地图

5. 用 R 语言制作交互式图表和地图

6. 基于出租车 GPS 轨迹数据的钻研:出租车行程的数据分析

7. R 语言动静可视化:制作历史寰球平均温度的累积动静折线图动画 gif 视频图

8. 把握出租车的数据脉搏

9. 共享单车大数据报告

正文完
 0