主要内容

预处理和探索时间戳数据使用时间表

这个例子展示了如何从传感器数据分析自行车交通模式时间表用于组织和预处理带有时间戳的数据的数据容器。这些数据来自马萨诸塞州剑桥市百老汇街的传感器。剑桥市向公众提供了在剑桥开放数据网站。

此示例显示了如何执行各种数据清洁,令人源和预处理任务,例如删除缺失值并使用不同的时间步单同步时间戳数据。此外,突出显示数据探索,包括使用可视化和分组计算时间表数据容器:

  • 了解每天的自行车流量

  • 比较自行车交通和当地的天气情况

  • 分析一周中不同时间的自行车流量

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

从逗号分隔的文本文件导入自行车交通数据示例。的可阅读函数返回表中的数据。使用该显示前八行函数。

bikeTbl = readtable ('bicyclecounts.csv');头(bikeTbl)
ans =8×5表时间戳天总西行的往东的  ___________________ _____________ _____ _________ _________ 2015-06-24就是{“星期三”}13 9 4 2015-06-24 01:00:00{“星期三”}3 3 0 2015-06-24 02:00:00{“星期三”}1 1 0 2015-06-24 03:00:00{“星期三”}1 1 0 2015-06-24 04:00:00{“星期三”}1 1 0 2015-06-24 05:00:00{“星期三”}7 3 42015-06-24 06:00:00 {'Wednesday'} 36 6 30 2015-06-24 07:00:00 {'Wednesday'} 141 13 128

数据有时间戳,因此使用时间表来存储和分析数据是很方便的。时间表类似于表,但包含与数据行相关联的时间戳。时间戳或行时间用datetime期间价值观。datetime期间是用于分别表示点或经过时间的推荐数据类型。

转变bikeTbl变成一个时间表table2timesable.函数。您必须使用转换函数,因为可阅读返回一个表。table2timesable.将第一个datetime期间将表中的变量转换为时间表的行时间。行时间是标记行的元数据。但是,当您显示时间表时,行时间和时间表变量将以类似的方式显示。请注意,表有五个变量,而时间表有四个。

bikedata = table2timetable(biketbl);头(Bikedata)
ans =8×4时间表时间戳天总西行的往东的  ___________________ _____________ _____ _________ _________ 2015-06-24就是{“星期三”}13 9 4 2015-06-24 01:00:00{“星期三”}3 3 0 2015-06-24 02:00:00{“星期三”}1 1 0 2015-06-24 03:00:00{“星期三”}1 1 0 2015-06-24 04:00:00{“星期三”}1 1 0 2015-06-24 05:00:00{“星期三”}7 3 42015-06-24 06:00:00 {'Wednesday'} 36 6 30 2015-06-24 07:00:00 {'Wednesday'} 141 13 128
bikeTblbikeData
名称大小字节类属性bikeData 9387x4 1412425时刻表bikeTbl 9387x5 1487735 table

访问时间和数据

转换一天变量来分类。分类数据类型是为包含有限离散值集的数据而设计的,比如星期几的名称。列出类别,以便按日顺序显示。使用点下标按名称访问变量。

bikedata.day =分类(bikedata.day,{“星期天”“周一”“星期二”......“星期三”'周四''星期五'“星期六”});

在时间表中,次数与数据变量分开处理。进入属性表的第一个维度是行时间,第二个维度是变量。的DimensionNames属性显示两个维度的名称,而VariableNames属性显示沿第2维的变量的名称。

bikedata.properties.
ans = TimetableProperties with properties: Description: " UserData: [] DimensionNames: {'Timestamp' 'Variables'} VariableNames: {'Day' 'Total' 'Westbound' 'Eastbound'} VariableDescriptions: {} VariableUnits: {} variablecontinuity: [] RowTimes: [9387x1 datetime] StartTime: 2015-06-24 00:00:00 SampleRate: NaN TimeStep: NaN CustomProperties:没有设置自定义属性。使用addprop和rmprop修改CustomProperties。

默认情况下,table2timesable.分配时间戳作为第一个维度名称,当它将表转换为时间表时,因为这是原始表中的变量名。您可以通过“更改尺寸”和其他时间表元数据的名称属性

将维度的名称更改为时间数据

bikeData.Properties.DimensionNames = {“时间”“数据”};bikedata.properties.
ANS = TimetableProperties具有属性:描述:''userData:[] Dimensionnames:{'Time'数据'} VariaBlenames:{'Day''总'''Westbound'''Eastbound''} VariabledEs:{}变量:{} variablecontinuity:[] Rowtims:[9387x1 DateTime] starttime:2015-06-24 00:00:00 Samplere:nan timeStep:nan customproperties:没有设置自定义属性。使用addprop和rmprop修改CustomProperties。

显示时间表的前8行。

头(Bikedata)
ans =8×4时间表时间一天总西行的往东的  ___________________ _________ _____ _________ _________ 2015-06-24就是星期三13 9 4 2015-06-24 01:00:00周三3 3 0 2015-06-24 02:00:00周三1 1 0 2015-06-24 03:00:00周三1 1 0 2015-06-24 04:00:00周三1 1 0 2015-06-24 05:00:00周三7 3 4 2015-06-24 06:00:00周三36 6 302015-06-24 07:00:00星期三141 13 128

确定最近的行时间和最早的行时间之间经过的天数。当一次引用一个变量时,变量可以通过点表示法访问。

elapsedTime = max(bikeData.Time) - min(bikeData.Time)
ElapsedTime =期间9383:30:00
ElapsedTime.Format =' d '
ElapsedTime =期间390.98天

为了检查某一天典型的自行车数量,计算自行车总数的平均值,以及西行和东行的数量。

通过索引到内容中将数字数据作为矩阵返回bikeData使用花括号。显示前8行。使用标准的表下标来访问多个变量。

counts = bikedata {:,2:结束};数(1:8,:)
ans =.8×313 9 4 3 3 0 1 1 0 1 1 0 1 1 0 7 3 4 36 6 30 141 13 128

由于均值仅适用于数字数据,因此可以使用vartype.函数选择数字变量。vartype.可以比手动索引到表或时间表更方便地选择变量。计算平均值并省略价值观。

数量= bikeData {: vartype (“数字”)};意思(计数,'omitnan'
ans =.1×3.49.8860 24.2002 25.6857

按日期和时间选择数据

要确定有多少人在假日期间骑自行车,请查看7月4日假期的数据。索引到时间表的行时间为2015年7月4日。当您在行时间上建立索引时,您必须精确匹配时间。可以指定时间索引为datetime期间值或作为可以转换为日期和时间的字符向量。您可以将多次指定为数组。

索引bikeData以具体日期和时间提取2015年7月4日的数据。如果仅指定日期,则假定时间为午夜或00:00:00。

bikeData (“2015-07-04”:)
ans =1×4时间表时间一天总西行的往东的  ___________________ ________ _____ _________ _________ 2015-07-04就是周六8 7 1
d = {'2015-07-04 08:00:00'“2015-07-04 09:00:00”};bikeData (d,:)
ans =2×4时间表时间日全球西行东行___________________ ________ _____ ___________________________ 2015-07-04 08:00:00星期六15 3 12 2015-07-04 09:00:00星期六21 4 17

用这种方法提取一整天的时间是很乏味的。您还可以指定时间范围,而无需对特定时间进行索引。要创建时间段下标作为helper,请使用timerange函数。

使用2015年7月4日全天的时间范围下标到时间表中。设置开始时间为7月4日午夜,结束时间为7月5日午夜。默认情况下,timerange涵盖从开始时间和最多的开始,但不包括结束时间。在一天的过程中绘制自行车计数。

tr = timerange (“2015-07-04”“2015-07-05”);jul4 = bikeData (tr,'全部的');头(jul4)
ans =8×1的时间表时间总计___________________ _____ 2015-07-04 00:00:00 8 2015-07-04 01:00:00 13 2015-07-04 02:00:00 4 2015-07-04 03:00:00 2015-07-04 04:00:00 0 2015-07-04 05:00:00 1 2015-07-04 06:00:00 8 2015-07-04 07:00:00 16
酒吧(Jul4.time,Jul4.Total)Ylabel(的自行车数量)标题(《2015年7月4日自行车倒计时》

图中包含一个坐标轴。标题为“Bicycle Counts on July 4, 2015”的坐标轴包含bar类型的对象。

从情节来看,全天有更多的体积,下午排水。由于许多企业已关闭,因此在通勤时间内不会显示典型流量。晚上后来的尖峰可以归因于烟花的庆祝活动,在黑暗之后发生。要更接近地检查这些趋势,应将数据与典型天数进行比较。

将7月4日的数据与7月其余时间的数据进行比较。

7月= bikeData (timerange ('2015-07-01'“2015-08-01”),:);情节(Jul.time,Jul.Total)持有情节(jul4.Time jul4.Total) ylabel (“总数”)标题(“七月自行车数”)举行传奇('自行车计数'“7月4日自行车统计”

图中包含一个坐标轴。标题为“Bicycle Counts in July”的坐标轴包含2个线型对象。这些对象代表自行车计数,7月4日自行车计数。

图表显示了工作日和周末之间的交通差异。7月4日和5日的交通情况与周末的交通情况一致。7月5日是星期一,但通常是假日。这些趋势可以通过进一步的预处理和分析来更仔细地检查。

预处理时间和数据使用时间表

带有时间戳的数据集通常是杂乱的,可能包含异常或错误。时间表非常适合解决异常和错误。

时间表不必以任何特定的顺序具有其行时间。它可以包含不按行时间排序的行。尽管行可以具有不同的数据值,但时间表也可以包含多行,但是具有不同的数据值。即使行时间是排序和唯一的,它们也可以随着不同尺寸的时间步长而不同。时间表甚至可以包含值指示缺失行时间。

时间表数据类型提供了许多不同的方法来解决丢失、重复或不一致的时间。还可以重新取样或聚合数据来创建常规的时间表。当一个时间表是规则的,它有排序和唯一的行时间,并且它们之间有一个统一或均匀间隔的时间步长。

  • 要找到缺少的行时间,使用不见了

  • 删除缺少的时间和数据,使用rmmissing

  • 要按行时对时间表排序,请使用sortrows

  • 要制作一个具有唯一和排序行时间的时间表,请使用独特的调整时间

  • 要制定有规律的时间表,请指定均匀间隔的时间向量并使用调整时间

按时排序

确定时间表是否排序。如果一个时间表的行时间按升序列出,那么它就是排序的。

issorted (bikeData)
ans =.逻辑0

的时间表。的sortrows函数根据行时间(从最早到最近)对行进行排序。如果有重复行时间的行,那么sortrows将所有重复副本复制到输出。

bikeData = sortrows (bikeData);issorted (bikeData)
ans =.逻辑1

识别并删除缺少的时间和数据

时间表的变量或行时间中可能有缺失的数据指示器。例如,可以将缺少的数值表示为,缺失的datetime值为属性可以指定、查找、删除和填充缺失的值standardizeMissing不见了rmmissing,填充函数,分别。

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

missData = ismissing (bikeData);总和(missData)
ans =.1×4.1 3 3 3

的输出不见了是一个逻辑矩阵,与表相同的大小,将缺失的数据值识别为true。显示任何缺少数据指示符的行。

idx = (missData, 2);bikeData (idx:)
ans =3×4时间表时间日全球东行___________________ ___________ __________ _____________ 2015-08-03 00:00:00周一南纳纳纳2015-08-03 01:00:00星期一南楠NAN NAN <未定义>南楠

ismissing (bikeData)仅在时间表变量中发现缺少数据,而不是时间。找到缺少的行时间,呼叫不见了行时间。

misstims = ismissing(bikedata.time);bikedata(misstims,:)
ans =2×4时间表时间一天总西行的往东的  ____ ___________ _____ _________ _________ NaT <定义>南南南NaT周五6 3 3

在本例中,缺失时间或数据值表示测量错误,可以排除。删除表中包含缺失数据值和缺失行使用时间的行rmmissing

bikeData = rmmissing (bikeData);sum (ismissing (bikeData))
ans =.1×4.0 0 0 0
sum (ismissing (bikeData.Time))
ans = 0.

删除重复次数和数据

确定是否有重复的次数和/或重复的数据行。您可能想要排除精确的重复,因为这些也可以被认为是测量错误。通过查找排序时间之间的差恰好为零的位置来识别重复时间。

Idx = diff(bikedata.time)== 0;dup = bikedata.time(IDX)
dup =3 x1 datetime2015-08-21 00:00:00 2015-11-19 23:00:00

三次重复,2015年11月19日重复两次。检查与重复时间相关的数据。

bikeData (dup (1):)
ans =2×4时间表时代西行全球东行___________________ ______ _____ _________________________ 2015-08-21 00:00:00星期五14 9 5 2015-08-21 00:00:00星期五11 7 4
Bikedata(DUP(2),:)
ans =3×4时间表时间一天总西行的往东的  ___________________ ________ _____ _________ _________ 2015-11-19 23:00:00周四17 15 2 2015-11-19 23:00:00周四17 15 2 2015-11-19 23:00:00周四17 15 2

第一种方法有重复的次数,但数据是不重复的,而其他方法是完全重复的。当时间表行包含相同的行时间和行之间相同的数据值时,它们被认为是重复的。您可以使用独特的删除时间表中的重复行。的独特的函数还按行时间对行进行排序。

bikeData =独特(bikeData);

具有重复次数但未重复数据的行需要一些解释。检查周围的数据。

D = dup(1) + hours(-2:2);bikeData (d,:)
ans =5×4时间表时间日总西行东行___________________ _____________ __________________ 2015-08-20 22:00:00星期四40 30 10 2015-08-20 23:00:00星期四25 18 7 2015-08-21 00:00:00星期五11 7 4 2015-08-21 00:00:00星期五14 9 5 2015-08-21 02:00:00星期五6 5

在这种情况下,重复的时间可能是错误的,因为数据和周围的时间是一致的。虽然它似乎代表01:00:00,但不确定这应该是什么时间。可以通过累积数据来解释两个时间点的数据。

sum (bikeData {dup (1), 2:})
ans =.1×3.25 16 9.

这只是可以手工完成的一种情况。然而,对于许多行,调整时间函数可以执行此计算。属性的惟一时间累计数据聚合函数。该和适用于数值数据,但不适用于时间表中的分类数据。使用vartype.识别数字变量。

vt = vartype(“数字”);t =独特(bikeData.Time);numData =调整时间(bikeData (:, vt), t,“和”);头(numdata)
ans =8×3的时间表时间Total西行东行___________________ ______________ _________ 2015-06-24 01:00:00 3 30 2015-06-24 02:00:00 1 1 0 2015-06-24 03:00:00 1 1 0 2015-06-24 05:00:00 7 3 4 2015-06-24 06:00:00 36 6 30 2015-06-24 07:00:00 141 13 128

您无法淘汰分类数据,但由于一个标签代表整天,因此每天都会拍摄第一个值。你可以执行调整时间用相同的时间向量再次操作,并将时间表连接在一起。

vc = vartype (“分类”);catData =调整时间(bikeData (:, vc), t,“firstvalue”);bikeData = [catData, numData];bikeData (d,:)
ans =4×4的时间表时间日总西行东行___________________ _____________ __________________ 2015-08-20 22:00:00星期四40 30 10 2015-08-20 23:00:00星期四25 18 7 2015-08-21 00:00:00星期五25 16 9 2015-08-21 02:00:00星期五6 5

检查时间间隔一致性

这些数据似乎具有统一的一小时时间步长。要确定这是否适用于时间表中的所有行时间,请使用isregular函数。isregular返回真正的对于分类,均匀间隔的时间(单调增加),没有重复或缺少时间()。

isregular (bikeData)
ans =.逻辑0

的输出0, 或者错误的表示时间表中的时间间隔不均匀。更详细地探索时间间隔。

dt = diff(bikedata.time);[min(dt);最大(dt)]
ans =.2 x1持续时间00:30:00 03:00:00

把时间表放在一个固定的时间间隔,使用调整时间同步并指定感兴趣的时间间隔。

确定每日自行车体积

计算每天的计数调整时间函数。使用每天累计计数数据方法。这适用于数字数据但不是时间表中的分类数据。使用vartype.按数据类型识别变量。

dayCountNum =调整时间(bikeData (:, vt),“每天”“和”);头(dayCountNum)
ans =8×3的时间表时间总西部东行_________________________ _________ _________ 2015-06-24 00:00:00 2015-06-25 00:00:00 2015-06-26 00:00:00 1748 970 778 2015-06 1123 983 2015-06_670 778 2015-06-27 00:00:00:00 695 346 349 2015-06-28 00:00:00 153 83 70 2015-06-29 00:00:00 1841 978 863 2015-06-30 00:00:00 2170 1145 1025 2015-07-01 00:00:00 997 544 453

如上所述,您可以执行调整时间再次操作以使用适当的方法表示分类数据并将时间表连接在一起。

dayCountCat =调整时间(bikeData (:, vc),“每天”“firstvalue”);Daycount = [DaycountCat,Daycountnum];头(Daycount)
ans =8×4时间表时间日总西行东行___________________ ______________ __________________ 2015-06-24 00:00:00星期三2141 1141 1000 2015-06-25 00:00:00星期四2106 1123 983 2015-06-26 00:00:00星期五1748 970 778 2015-06-27 00:00:00星期六695 346 349 2015-06-28 00:00:00星期日153 83 70 2015-06-29 00:00:00星期一1841 978 863 2015-06-3000:00星期二2170 1145 1025 2015-07-01 00:00:00星期三997 544 453

同步自行车计数和天气数据

通过比较自行车数量和天气数据来检验天气对骑车行为的影响。载入天气时间表,其中包括来自波士顿的历史天气数据,包括风暴事件。

加载BostonWeatherData头(weatherData)
ans =8×3的时间表时间温度湿度事件___________ ____________ ________ ____________ 01- 7- 2015 72 78雷暴02- 7- 2015 72 60无03- 7- 2015 70 56无04- 7- 2015 67 75无05- 7- 2015 72 67无06- 7- 2015 74 69无07- 7- 2015 75 77雨08- 7- 2015 79 68雨

总结时间表中的时间和变量,使用总结函数。

总结(weatherData)
rowtimes:时间:383x1 DateTime值:Min 01-Jul-2015中位数08-Jan-2016 Max 17-Jul-2016 Simestep 24:00:00变量:383x1双值:MIN 2中位数55最大85湿度:383x1双倍价值观:最小29中位数64最多97个事件:383x1分类价值:雾7冰雹1雨108雨雪4雪18雷暴12无233

将自行车数据与天气数据组合到一个常用的时间向量使用同步.您可以使用参考页面上的任何方法重新确定或聚合时间表数据同步函数。

将两个时间表的数据同步到一个共同的时间向量,这个时间向量是由它们各自的每日时间向量的交集构成的。

数据=同步(Daycount,WeatherData,“十字路口”);头(数据)
ans =8×7时间表时间日总西行东行温度湿度事件___________________ ______________ __________________ ____________ ________ ____________ 2015-07-01 00:00:00星期三997 544 453 72 78雷雨2015-07-02 00:00:00星期四1943 1033 910 72 60无2015-07-03 00:00:00星期五870 454 416 70 56无2015-07-04 00:00:00星期六669 328 341 67 75无2015-07-05 00:00:00 Sunday 702 407 295 72 67无2015-07-06 00:00:00 Monday 1900 1029 871 74 69无2015-07-07 00:00:00 Tuesday 2106 1140 966 75 77 Rain 2015-07-08 00:00:00 Wednesday 1855 984 871 79 68 Rain

在不同的y轴上比较自行车流量和室外温度的变化趋势。从数据中删除周末以实现可视化。

idx =〜isweekend(data.time);WheedayData =数据(IDX,{“TemperatureF”'全部的'});图yyaxis.情节(weekdayData。时间,weekdayData.Total) ylabel('自行车计数') yyaxis正确的情节(weekdayData.Time weekdayData.TemperatureF) ylabel (“温度(\保监会F)”)标题(“自行车数量和温度随时间变化”) xlim((最小(data.Time)最大(data.Time)))

图中包含一个坐标轴。标题为“自行车计数”和“温度随时间变化”的轴包含2个类型为line的对象。

这张图显示,交通和天气数据可能也会遵循类似的趋势。放大情节。

XLIM([DateTime(“2015-11-01”)、日期时间('2016-05-01')])

图中包含一个坐标轴。标题为“自行车计数”和“温度随时间变化”的轴包含2个类型为line的对象。

趋势是相似的,表明更冷的天气骑车的人更少。

根据每周的日期和时间进行分析

基于不同的间隔检查数据,例如一周中的一天和一天中的时间。使用的每天确定总计数量varfun.对变量进行分组计算。指定使用函数句柄和使用名称值对的分组变量和首选输出类型。

byDay = varfun (@sum bikeData,'组分组variables''日'......“OutputFormat”“表”
byDay =7×5表日GroupCount sum_Total sum_西向sum_东向_________ __________ _________ _____________ _____________星期日1344 25315 12471 12844星期一1343 79991 39219 40772星期二1320 81480 39695 41785星期三1344 86853 41726 45127星期四1344 87516 42682 44834星期五1342 76643 36926 39717星期六1343 30292 14343 15949
图酒吧(byDay {: {“sum_Westbound”'sum_eastbound'}})传说({'Westbound''东行'},“位置”“eastoutside”)xticklabels({'太阳'“星期一”'星期二''星期三'“星期四”'fri'“坐”}) 标题('一周的自行车计数'

图中包含一个坐标轴。标题为“Bicycle Count by Day of Week”的轴包含2个bar类型的对象。这些对象代表西行和东行。

条形图表明平日的流量更大。此外,东行和西行方向存在差异。这可能表明,人们在进入和离开城市时倾向于采取不同的路线。另一种可能性是有些人在一天内进入并在另一天返回。

确定一天的时间和使用varfun.按组计算。

bikeData。HrOfDay =小时(bikeData.Time);byHr = varfun (@mean bikeData (: {'Westbound''东行'“HrOfDay”}),......'组分组variables'“HrOfDay”“OutputFormat”“表”);头(byHr)
ans =8×4表HrOfDay GroupCount mean_Westbound mean_Eastbound _______ __________ ______________ ______________ 0 389 5.4396 1.7686 1 389 2.7712 0.87147 2 391 1.8696 0.58312 3 391 0.7468 0.289 4 391 0.52685 1.0026 5 391 0.70588 4.7494 6 391 3.1228 22.097 7 391 9.1176 63.54
栏(byHr {: {“mean_Westbound”“mean_Eastbound”}}) 传奇('Westbound''东行'“位置”“eastoutside”)包含(一天的小时) ylabel ('自行车计数')标题('平均自行车计数一小时'

图中包含一个坐标轴。标题为Mean Bicycle Count by Hour of Day的坐标轴包含2个bar类型的对象。这些对象代表西行和东行。

典型通勤时间有交通尖峰,上午9点左右和下午5点。此外,东行和西行方向之间的趋势是不同的。一般来说,西行方向朝向剑桥地区周围的住宅区和朝向大学。东行方向是波士顿。

当天晚些时候,西行方向的交通较东行方向繁忙。这可能表明大学的时间表和由于该地区的餐馆而造成的交通。检查趋势,以天的星期和小时的一天。

byhrday = varfun(@ sum,bikedata,'组分组variables',{“HrOfDay”'日'},......“OutputFormat”“表”);头(byHrDay)
ans =8×6表HRofday Day Groupcount sum_total sum_westbound sum_eastbound ___________________ ____________________________ 0星期日56 473 345 128 0星期二55 202 145 57 0星期二55 213 84 0星期三56 436 324 112 0星期六324 112 0星期六56 580 455 125 1星期日56 333 259 74

要安排时间表,使星期几是可变的,请使用un函数。

hranddayweek = unstack(Byhrday(:,{“HrOfDay”'日'“sum_Total”}),“sum_Total”'日');头(hrAndDayWeek)
ans =8×8表HrOfDay周日周一周二周三周四周五周六  _______ ______ ______ _______ _________ ________ ______ ________ 0 473 202 297 374 436 442 580 333 81 147 168 173 183 332 86 198 77 68 93 128 141 254 3 51 41 43 44 50 61 80 81 117 101 108 80 60 419 105 353 407 381 340 128 275 1750 1867 2066 1927 1625 351 553 5355 5515 5818 75731 4733 704
hrAndDayWeek. hrofday,hrAndDayWeek{:,2:end}) ylim([0 24]) xlim([0 8]) xticks(1:7) xticklabels({'太阳'“星期一”'星期二''星期三'“星期四”'fri'“坐”})ylabel(“小时”)标题(“以小时和天计算自行车数量”

图中包含一个坐标轴。具有标题自行车计数的轴一小时和一周的一天包含7个类型表面的物体。

周一到周五的正常工作日也有类似的趋势,高峰是在高峰时间,交通在晚上逐渐减弱。周五交易量较小,但总体趋势与其他工作日类似。周六和周日的趋势相似,没有高峰时段,当天晚些时候流量会更大。周一至周五晚间的走势也类似,周五成交量较小。

高峰时段交通分析

要检查日期趋势的总时间,请通过高峰时段分开数据。可以使用不同的一天或时间单位使用离散化函数。例如,将数据分成组AMRush一天PMRush下午.然后使用varfun.按组计算平均值。

bikeData。(bikeData HrLabel =离散化。HrOfDay,[0、6、10、15、19日24),“分类”......{“我”“RushAM”'日'“RushPM”“点”});byHrBin = varfun (@mean bikeData (: {'全部的'“HrLabel”}),'组分组variables'“HrLabel”......“OutputFormat”“表”
byhrbin =5×3表Hrlabel Groupcount Mean_total _______ __________ __________ am 2342 3.5508 Raplam 1564 94.893日1955 45.612 Rushpm 1564 98.066 PM 1955 35.198
bar(byhrbin.mean_total)cats =类别(byhrbin.hrllabel);XTicklabels(猫)标题(“高峰时段的平均自行车计数”

图中包含一个坐标轴。标题为Mean Bicycle Count During Rush Hours的坐标轴包含一个bar类型的对象。

总的来说,这个地区在晚高峰和早高峰时间的交通流量是一天中其他时间的两倍。这个地区在清晨的交通很少,但在傍晚和深夜仍然有大量的交通,这与白天以外的早晚高峰时间相当。

另请参阅

||||||||||

相关话题