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

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

这个示例展示了如何执行各种数据清理、删除和预处理任务,例如删除丢失的值和使用不同的时间步骤同步带有时间戳的数据。此外,突出显示了数据探索,包括可视化和使用时间表数据容器:

  • 探索日常自行车交通

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

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

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

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

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

数据具有时间戳,因此使用时间表可以存储和分析数据是方便的。时间表类似于表格,但包括与数据行相关联的时间戳。时间戳或行时间是表示的约会时间或者期间值。约会时间期间分别为表示时间点或运行时间的推荐数据类型。

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

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
Biketbl.Bikedata.
名称大小字节类属性bikedata 9387x4 1412426时间表biketbl 9387x5 1487736表

访问时间和数据

转换一天变量分类。分类数据类型专为包含有限一组离散值的数据而设计,例如一周中的几天的名称。列出类别,因此它们在日期中显示。使用DOT子用户按名称访问变量。

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

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

bikedata.properties.
ans = timetableproperties with属性:description:''''userdata:[] dimensionnames:{timestamp'变量'} variablenames:{'day''总'''westbound'''Eastbound'''Eastbound'} Variabledes:{}变量:{} variableconity:[] Rowtims:[9387x1 DateTime] starttime:2015-06-24 00:00:00 Samplere:nan timeStep:nan customproperties:没有设置自定义属性。使用addprop和rmprop修改customproperties。

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

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

bikeData.Properties.DimensionNames = {“时间”“数据”};bikedata.properties.
ans = TimetableProperties with properties: Description: " UserData: [] DimensionNames: {'Time' 'Data'} 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。

显示时间表的前8行。

头(Bikedata)
ANS =8×4时间表时间日总西行东行___________________ _________ _____ _________ _________ 2015年6月24日00:00:00星期三13 9 4 2015年6月24日01:00:00周三3 3 0 2015年6月24日02:00:00星期三11 0 2015年6月24日3点00分00秒星期三1 1 0 2015年6月24日4时○○分00秒星期三1 1 0 2015年6月24日星期三五点○○分00秒7 3 4 2015年6月24日06:00:00 36星期三6 30 2015年6月24日7点○○分00秒141星期三13 128

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

elapsedTime = MAX(bikeData.Time) - 分钟(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 30 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×349.8860 24.2002 25.6857

按日期和时间选择数据

要在节日期间确定有多少人自行车中,检查节日七月的第四数据。指数进入时间表按行时间为2015年当上排时报指数,你必须完全匹配时间7月4日。您可以指定时间指数为约会时间或者期间值,或可转换为日期和时间的字符向量。您可以将多次指定为一个数组。

索引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

使用这一策略提取全天将是令人疑惑的。您还可以在不索引特定时间的情况下指定时间范围。要创建时间范围下标作为帮助程序,请使用时间范围函数。

使用2015年7月4日全天的时间范围下标到时间表中。设置开始时间为7月4日午夜,结束时间为7月5日午夜。默认情况下,时间范围包括从开始时间到结束时间(但不包括结束时间)的所有时间。在地图上标出一天中自行车的数量。

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 1 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
酒吧(jul4.Time jul4.Total) ylabel (的自行车数量) 标题(《2015年7月4日自行车倒计时》

从图中可以看出,全天的业务量都在增加,下午趋于平稳。因为很多商店都关门了,所以这个地块没有显示通勤时间的典型交通状况。晚上晚些时候的峰值可以归因于在天黑后燃放烟花的庆祝活动。为了更仔细地检查这些趋势,应该将数据与典型天数的数据进行比较。

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

Jul = Bikedata(timerange('2015-07-01'“2015年8月1日”),:);情节(Jul.time,Jul.Total)持有情节(jul4.Time jul4.Total) ylabel (“总数”) 标题(“七月自行车数”) 抓住离开传奇('自行车计数'“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, 和fillmissing函数,分别。

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

missData = ISMISSING(bikeData);总和(missData)
ans =.1×41 3 3 3

从输出不见了是A.逻辑矩阵,与表相同的大小,将缺失的数据值识别为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)只查找时间表变量中丢失的数据,而不查找时间。要找到缺少的行次数,调用不见了行时间。

missTimes = ismissing (bikeData.Time);bikeData (missTimes:)
ANS =2×4时间表时代西行全球____________ ____________ ________ undemined>南楠南纳星期五6 3 3

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

bikeData = rmmissing (bikeData);sum (ismissing (bikeData))
ans =.1×40 0 0 0
总和(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时间表时间日全球西行东行___________________ ________ _____ _______________________________11-19星期四17 15 2 2015-11-19 23:00:00星期四17 15 2 2015-11-19 23:00:00星期四1715 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,但不确定这应该是什么时间。可以通过累积数据来解释两个时间点的数据。

总和(bikeData {DUP(1),2:端})
ans =.1×325 16 9

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

vt = vartype('数字');t =独特(Bikedata.time);numdata = Retime(Bikedata(:,VT),T,'和');头(numData)
ANS =8×3的时间表时间全球西行东行___________________ _____ _________ _________ 2015-06-24 00:00:00 13 9 4 2015-06-24 01:00:00 3 3 0 2015-06-24 02:00:00 1 0 2015-06-24 3时○○分00秒1 1 0 2015年6月24日4时00分〇〇秒1 1 0 2015年6月24日五点零零分00秒7 3 4 2015年6月24日6时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时间表时间一天总西行桥东___________________ ________ _____ _________ _________二○一五年八月二十○日22:00:00周四40 30 10二○一五年八月二十○日23:00:00周四25 18 7 2015年8月21日00:00:00周五2516 9 2015年8月21日02:00:00星期五6 5 1

检查时间间隔一致性

该数据似乎有一个小时的均匀的时间步长。为了确定这是否是在时间表所有行时间true,则使用是的函数。是的返回真的对于已排序的等间距时间(单调递增),没有重复或遗漏的时间(或者)。

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年6月24日00:00:00周三2141 1141 1000 2015年6月25日00:00:00星期四2106 1123 983 2015年6月26日00:00:00星期五1748970 778 2015年6月27日00:00:00星期六695 346 349 2015年6月28日00:00:00星期天153 83 70 2015-07-02 00:00:00周一1841 978 863 2015年6月30日00:00:00周二2170 1145 1025 2015年7月1日00:00:00周三997 544 453

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

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

加载Bostonweatherdata.头(weatherData)
ANS =8×3的时间表时间TemperatureF湿度活动___________ ____________ ________ ____________ 01-JUL-2015 72 78 02雷雨-JUL-2015 72 60无03-JUL-2015 70 56无04-JUL-2015 67 75无05-JUL-2015 72 67无06-Jul-2015 74 69无07-Jul-2015 75 77 Rain 08-Jul-2015 79 68雨

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

摘要(weatherData)
x1 datetime值:RowTimes:时间:383分钟01 - 2015中位数08年7月- 2016年1月2016 Max 17 - 7月步伐24:00:00变量:TemperatureF: x1双重价值:383分钟2 55 Max 85湿度中位数:383 x1双重价值:分钟29 64 Max 97事件中位数:383 x1分类值:7冰雹雨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([min(data.time)max(data.time)])

该情节表明,流量和天气数据可能遵循类似的趋势。放大图。

XLIM([DateTime('2015-11-01'),约会时间(“2016-05-01”)])

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

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

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

BYDAY = varfun(@总和,bikeData,'组分组variables'“天”...'输出格式'“表”
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
图酒吧(Dayday {:,{'sum_Westbound''sum_eastbound'}}) 传奇({“西行”'东行'},'地点''eastoutside')xticklabels({“太阳”“星期一”'星期二'“结婚”“星期四”'fri'“坐”}) 标题(“每周的自行车数”

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

确定一天的时间和使用varfun用于分组计算。

bikeData.HrOfDay =小时(bikeData.Time);byHr = varfun(@均值,bikeData(:,{“西行”'东行''hrofday'}),...'组分组variables''hrofday''输出格式'“表”);头(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'}}) 传奇(“西行”'东行''地点''eastoutside')xlabel(“一天的时光”)ylabel('自行车计数') 标题('平均自行车计数一小时'

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

交通较重当天晚些时候在西行方向较东行方向。这可能表明大学的时间表和交通因餐馆在该地区。审查星期小时工作制的趋势,以及。

byhrday = varfun(@ sum,bikedata,'组分组variables',{'hrofday'“天”},...'输出格式'“表”);头(byHrDay)
ANS =8×6表HrOfDay天GroupCount sum_Total sum_Westbound sum_Eastbound  _______ _________ __________ _________ _____________ _____________ 周日56 473 345 128 0 0周一55 202 145 57 0周二55 297 213 84 0周三56周四56 436 324 112 374 286 88 0 0周五55 442 348 94 0周六周日56 56 580 455 125 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 1 333 81 147 168 173 183 332 2 198 77 68 93 128 141 254 3 86 41 43 44 50 61 80 4 5181 117 101 108 80 60 5 105 353 407 419 381 340 128 6 275 1750 1867 2066 1927 1625 351 553 7 5355 5515 5818 5731 4733 704
带(hrAndDayWeek.HrOfDay,hrAndDayWeek {:,2:端})ylim([0 24])XLIM([0 8])xticks(1:7)xticklabels({“太阳”“星期一”'星期二'“结婚”“星期四”'fri'“坐”})ylabel(“小时”) 标题(“自行车按周的小时和天数”

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

分析流量在高峰

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

bikeData.HrLabel =离散化(bikeData.HrOfDay,[0,6,10,15,19,24]'分类'...“我”'RushAM'“天”“RushPM”“点”});byHrBin = varfun(@均值,bikeData(:,{'全部的''hrlabel'}),'组分组variables''hrlabel'...'输出格式'“表”
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 = categories(byHrBin.HrLabel);xticklabels(猫)标题(“高峰时段的平均自行车计数”

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

另请参阅

||||||||||

相关的话题