主要内容

时间表을사용하여타임스탬프가지정된데이터전처리후탐색하기

이예제에서는时间表데이터컨테이너를사용하여센서데이터에서자전거통행량의패턴을분석하는방법을보여줍니다。时间表데이터컨테이너는타임스탬프가지정된데이터를구성하고전처리하는데사용됩니다。데이터는매사추세츠주케임브리지에있는브로드웨이스트리트(百老汇街)의센서데이터입니다。케임브리지시는일반들이케임브리지오픈데이터(剑桥开放数据)사이트에서전체데이터세트에액세스할수있도록하고있습니다。

이예제에서는누락된값제거,여러시간스텝을가진타임스탬프데이터의동기화등다양한데이터정리,먼징(绿豆)전처리작업을수행하는방법을보여줍니다。또한时间表데이터컨테이너로다음작업을수행하여시각화와그룹형계산을비롯한데이터탐색을강조표시합니다。

  • 일일자전거통행량탐색

  • 자전거통행량과현지기상조건비교

  • 다양한일과시간에대한자전거통행량분석

자전거통행량데이터를타임테이블로가져오기

쉼@ @로구분된텍스트파일에서자전거통행량데이터샘플을가져옵니다。readtable함수는데이터를테이블형식으로반환합니다。함수를사용하여처음8개행을시합니다。

bikeTbl =可读(“BicycleCounts.csv”);头(bikeTbl)
时间戳日期总西行东行___________________ __________________ __________________ 2015-06-24 00:00:00{'星期三'}13 9 4 2015-06-24 01:00:00{'星期三'}3 30 2015-06-24 02: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 30 2015-06-24 07:00:00{'星期三'}141 13 128

이데이터에는타임스탬프가있어타임테이블을사용하여데이터를저장하고분석하기가편리합니다。타임테이블은테이블과유사하지만데이터행과연결된타임스탬프를포함합니다。타임스탬프와행시간값은각각datetime값과持续时间값으로@ @시됩니다。시점과경과시간을@ @시할때는각각datetime데이터형과持续时间데이터형을사용하는것이좋습니다。

table2timetable함수를사용하여bikeTbl을타임테이블로변환해보겠습니다。readtable은테이블을반환하기때문에변환함수를사용해야합니다。table2timetable은테이블의첫번째datetime변수 또는持续时间변수를타임테이블의행시간값으로변환합니다。행시간값은행에레이블을지정하는메타데이터입니다。그러나타임테이블을표시할경우에는행시간값과타임테이블변수가비슷한방식으로표시됩니다。반면,타임테이블의변수는4개입니다。

bikeData = table2时间表(bikeTbl);头(bikeData)
时间戳日期总西行东行___________________ __________________ __________________ 2015-06-24 00:00:00{'星期三'}13 9 4 2015-06-24 01:00:00{'星期三'}3 30 2015-06-24 02: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 30 2015-06-24 07:00:00{'星期三'}141 13 128
bikeTblbikeData
名称大小字节类属性bikeData 9387x4 1412425时间表bikeTbl 9387x5 1487735表

시간값과데이터에액세스하기

一天변수를分类형으로변환합니다。直言형데이터는유한한이산값집합(예:요일이름)으로구성된데이터를위해설계되었습니다。일순서대로범주를나열합니다。점첨자를사용하여이름으로변수에액세스해보겠습니다。

bikeData。一天= categorical(bikeData.Day,{“星期天”“周一”“星期二”...“星期三”“星期四”“星期五”“星期六”});

타임테이블에서시간값은데이터변수와는별도로처리됩니다。타임테이블의属性에액세스하여행시간값이타임테이블의첫번째차원이고변수가두번째차원이라는것을확인합니다。DimensionNames속성은두개차원의이름을시하고,VariableNames속성은두번째차원의변수이름들을@ @시합니다。

bikeData。属性
ans = timeableproperties with properties: Description: " UserData: [] DimensionNames: {'Timestamp' 'Variables'} VariableNames: {'Day' 'Total' '西行''东行'}variabledescription: {} VariableUnits: {} variableccontinucontinuations: [] RowTimes: [9387x1 datetime] StartTime: 2015-06-24 00:00:00 SampleRate: NaN TimeStep: NaN CustomProperties:无自定义属性设置。使用addprop和rmprop修改CustomProperties。

table2timetable이테이블을타임테이블로변환할때기본적으로时间戳를첫번째차원이름으로할당했습니다。时间戳가원래테이블의변수이름이기때문입니다。属性를통해차원이름과,타임테이블의기타메타데이터를변경할수있습니다。

차원이름을时间数据로변경해보겠습니다。

bikeData.Properties.DimensionNames = {“时间”“数据”};bikeData。属性
ans = timeableproperties with properties: Description: " UserData: [] DimensionNames: {'Time' 'Data'} VariableNames: {'Day' 'Total' '西行''东行'}variabledescription: {} VariableUnits: {} variableccontinucontinuations: [] RowTimes: [9387x1 datetime] StartTime: 2015-06-24 00:00:00 SampleRate: NaN TimeStep: NaN CustomProperties:无自定义属性设置。使用addprop和rmprop修改CustomProperties。

타임테이블의처음8개행을시합니다。

头(bikeData)
时间日期总西行东行___________________ ______________ __________________ 2015-06-24 00:00:00周三13 9 4 2015-06-24 01:00:00周三3 30 2015-06-24 02: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 30 2015-06-24 07:00:00周三141 13 128

가장늦은행시간값과가장이른행시간값사이의경과일을확합니다。차례로변수를참조할때점@ @기법을사용하여변수에액세스할수있습니다。

elapsedTime = max(bikeData.Time) - min(bikeData.Time)
elapsedTime =持续时间9383:30:00
elapsedTime。格式=' 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

날짜와시간으로데이터선택하기

휴일에얼마나많은사람들이자전거를이용하는지확인하기위해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

이방법을사용하여하루전체에대한데이터를추출하는것은번거로운일입니다。특정시간값에대해덱싱하지않고시간범위를지정해도됩니다。시간범위첨자를헬퍼로생성하려면timerange함수를사용하십시오。

2015년7월4일하루동의시간범위를타임테이블에첨자로사용합니다。시작시간을7월4일자정으로,종료시간을7월5일자정으로지정합니다。기본적으로timerange는시작시간부터종료시간까지의모든시간값을포함하되,종료시간은포함하지않습니다。하루동의자전거수를플로팅해보겠습니다。

Tr =时间范围(“2015-07-04”“2015-07-05”);jul4 = bikeData(tr,“总”);头(jul4)
时间合计___________________ _____ 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 16 .时间合计
酒吧(jul4.Time jul4.Total) ylabel (的自行车数量)标题(“2015年7月4日清点自行车”

图中包含一个轴对象。2015年7月4日,标题为Bicycle Counts的axes对象包含一个类型为bar的对象。

플롯에서하루동자전거수는점점늘어나다가오후가되면정을유지합니다。많은기업들이근무를하지않기때문에플롯에서출퇴근시간에일반적인통행량이표시되지않습니다。어두워지면축하불꽃놀이가시작되어늦은저녁시간에는자전거수가최대치에달합니다。이러한추세를더자세히검토하려면이데이터를보통날의데이터와비교해야합니다。

7월4월의데이터와나머지7월날짜들의데이터를비교해보겠습니다。

jul = bikeData(时间范围(“2015-07-01”“2015-08-01”):);情节(jul.Time jul.Total)情节(jul4.Time jul4.Total) ylabel (“总数”)标题(“七月的自行车计数”)举行传奇(“自行车数”“七月四日单车清点”

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

플롯은주중과주말의통행량차이로한변동추세를보여줍니다。7월4일과5일의통행량패턴은주말통행량패턴과일치합니다。7월5일은월일이지만공휴일로지정되어있습니다。이러한추세는추가적전처리와분석을통해더자세히검토할수있습니다。

时间表을사용하여시간값과데이터전처리하기

보통타임스탬프가지정된데이터세트는정리가되지않기때문에이상과오류가있을수있습니다。타임테이블은이상과오류를해결하는데매우적합합니다。

타임테이블은행시간값을특정순서대로정렬할필가없습니다。해당행시간값별로정렬되지않은행을포함할수있습니다。또한타임테이블에는같은행시간값을가진행이여러개포함될수있습니다。물론행에는서로다른데이터값이있을수도있습니다。행시간값이고유하고정렬되어있는경우에도행시간값간의시간스텝의크기는다를수있습니다。타임테이블에는누락된행시간값을나타내는NaT값 또는값도포함될수있습니다。

时间表데이터형은누락된시간값,중복된시간값또는균일하지않은시간값을해결할수있는다양한방법들을제공합니다。또한데이터를리샘플링하거나집계하여규칙적iot타임테이블을생성할수도있습니다。타임테이블이규칙적이면여기에포함된행시간값은정렬되어있고고유하며균일한간격의시간스텝을가집니다。

  • 누락된행시간값을찾으려면ismissing을사용하십시오。

  • 누락된시간값과데이터를제거하려면rmmissing을사용하십시오。

  • 타임테이블을행시간값을기준으로정렬하려면sortrows를사용하십시오。

  • 고유하고정렬된행시간값이포함된타임테이블을만들려면独特的调整时间을사용하십시오。

  • 규칙적타임테이블을만들려면균일한간격의시간벡터를지정하고调整时间을사용하십시오。

시간순으로정렬하기

타임테이블이정렬되어있는지확합니다。행시간값이오름차순으로나열되어있으면타임테이블이정렬된것입니다。

issorted (bikeData)
ans =逻辑0

타임테이블을정렬해보겠습니다。sortrows함수는행을해당행시간값을기준으로가장이른시간에서가장늦은시간으로정렬합니다。중복된행시간값을가진행이있으면sortrows는모든중복항목을출력값으로복사합니다。

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

누락된시간값과데이터를식별하고제거하기

타임테이블에서는변수또는행시간값에누락된데이터지정자를사용할수있습니다。예를들어,누락된숫자형값은으로,누락된datetime형값은NaT로@ @시할수있습니다。standardizeMissing함수,ismissing함수,rmmissing함수,fillmissing함수를사용하여각각누락된값을할당하고찾고제거하고채울수있습니다。

타임테이블변수의누락된값을찾아개수를세어보겠습니다。이예제에서누락된값은수집된데이터가없는경우를나타냅니다。

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

ismissing의출력값은테이블과크기가같은逻辑행렬로,누락된데이터값을真로식별합니다。누락된데이터지정자가있는행을@ @시해보겠습니다。

idx = any(misdata,2);bikeData (idx:)
ans =3×4时间表时间一天总西行的往东的  ___________________ ___________ _____ _________ _________ 2015-08-03就是周一南南南南南南2015-08-03 01:00:00 NaT <定义>南南南

ismissing (bikeData)는시간값이아니라타임테이블의변수에서만누락된데이터를찾습니다。누락된행시간값을찾으려면행시간값에대해ismissing을호출하십시오。

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

이예제에서누락된시간값또는데이터값은계측오류를나타내므로제외할수있습니다。rmmissing을사용하여누락된데이터값이나누락된행시간값이포함된테이블행을제거해보겠습니다。

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

중복된시간값이나중복된데이터제거하기

데이터에중복된시간값및/또는중복된행이있는지확합니다。명확한중복항목은계측오차로간주될수도있으므로제외하는것이좋습니다。정렬된시간값들사이의차이가정확하게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 23:00:00

반복되는시간값은3개이고,2015년11월19일은두번반복됩니다。반복된시간값과관련된데이터를검토해보겠습니다。

bikeData (dup (1):)
ans =2×4时间表时间一天总西行的往东的  ___________________ ______ _____ _________ _________ 2015-08-21就是周五14 9 5 2015-08-21就是星期五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 = unique(bikeData);

시간값이중복되지만데이터는중복되지않는행은확이필합니다。이러한시간값에대한데이터를검토해보겠습니다。

D = dup(1) +小时(-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 1 .

이경우,데이터와그관련시간값들이일관되기때문에중복된시간값은실수일수있습니다。중복항목이01:00:00을나타내는것으로보이지만원래몇시여야하는지확실하지는않습니다。두시간지점의데이터를설명하기위해데이터를누적할수있습니다。

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

유일하게수동으로수행할수있는작업입니다。하지만대부분의행에서는调整时间함수로이계산을수행할수있습니다。总和함수를사용하여집계함으로써데이터를누적하고고유시간값으로만듭니다。总和은숫자형데이터에는적합하지만타임테이블直言형의데이터에는적합하지않습니다。vartype을사용하여숫자형변수를식별해보겠습니다。

Vt = vartype(“数字”);t = unique(bikeData.Time);numData = retime(bikeData(:,vt),t,“和”);头(numData)
时间总西行东行___________________ ______________ _________ 2015-06-24 00:00:00 13 9 4 2015-06-24 01:00:00 3 30 2015-06-24 02: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 30 2015-06-24 07:00:00 141 13 128

直言형데이터의합을구할수는없지만하나의레이블이하루를나타내기때문에각시간값의첫번째값을취하면됩니다。동일한시간벡터로다시调整时间연산을수행하여타임테이블을결합할수있습니다。

Vc = vartype(“分类”);catData = retime(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 1 .

시간간격의균등성검사하기

이데이터는균등하게1시간간격의시간스텝을가지는것으로보입니다。타임테이블의모든행시간값에균등한간격이적용되었는지확하려면isregular함수를사용하십시오。isregular는중복되거나누락된시간값(NaT또는)없이균일한간격으로정렬된시간값(단조가)에대해서는真正的를반환합니다。

isregular (bikeData)
ans =逻辑0

출력값0또는는타임테이블의시간값에균일한간격이적용되지않았다는것을나타냅니다。시간간격을더자세히탐색해보겠습니다。

dt = diff(bikeData.Time);[min (dt);马克斯(dt)]
ans =2 x1持续时间00:30:00 03:00:00

타임테이블에규칙적시간간격을적용하려면调整时间또는同步를사용하여원하는시간간격을지정하십시오。

일일자전거수량확하기

调整时间함수를사용하여일일자전거수를확해보겠습니다。总和메서드를사용하여각날짜의개수데이터를누적할수있습니다。总和은숫자형데이터에는적합하지만타임테이블直言형의데이터에는적합하지않습니다。데이터형으로변수를식별하려면vartype을사용하십시오。

dayCountNum = retime(bikeData(:,vt),“每天”“和”);头(dayCountNum)
时间总西行东行___________________ ______________ _________ 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-30 00:00:00 2170 1145 1025 2015-07-01 00:00:00 997 544 453

또다시,分类형데이터를` ` ` `시하기위해调整时间연산을적합한메서드와함께다시수행하고타임테이블을결합할수있습니다。

dayCountCat = retime(bikeData(:,vc),“每天”“firstvalue”);dayCount = [dayCountCat,dayCountNum];头(dayCount)
时间日期总西行东行___________________ ______________ __________________ 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-30周二00:00:00 2170 1145 1025 2015-07-01周三00:00:00 997 544 453

자전거수와기상데이터동기화하기

자전거수와기상데이터를비교하여날씨가자전거이용에미치는영향을검토해보겠습니다。폭풍을비롯해매사추세츠주보스턴의과거기상데이터가포함된기상타임테이블을불러와보겠습니다。

负载BostonWeatherData头(weatherData)
时间温度f湿度事件___________ ____________ ________ ____________ 2015年7月01日72 78雷暴事件2015年7月02日72 60无2015年7月03日70 56无2015年7月04日67 75无2015年7月05日72 67无2015年7月06日74 69无2015年7月07日75 77雨2015年7月08日79 68雨

타임테이블의시간값과변수를약하려면总结함수를사용하십시오。

总结(weatherData)
RowTimes: Time: 383x1 datetime值:Min 01- july -2015中位数08- january -2016最大17- july 2016 TimeStep 24:00:00变量:TemperatureF: 383x1 double值:Min 2中位数55 Max 85湿度:383x1 double值:Min 29中位数64 Max 97事件:383x1分类值:雾7冰雹1雨108雨雪4雪18雷暴12无233

同步를사용하여자전거데이터와기상데이터를공통된시간벡터로결합합니다。同步함수도움말페이지에설명된메서드를사용하여타임테이블데이터를리샘플링하거나집계할수있습니다。

두타임테이블의데이터를각일별시간벡터의교집합에서생성된,공통된시간벡터로동기화해보겠습니다。

数据=同步(dayCount,weatherData,“十字路口”);头(数据)
时间日期总西向东向温度f湿度事件___________________ ______________ __________________ ____________ ________ ____________ 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 702 407 295 72 67无2015-07-06周一00:00:00 1900 1029 871 74 69无周二2106 1140 966 75 77雨2015-07-08 00:00:00周三1855 984 871 79 68雨

별도의y축에서자전거통행량과실외온도를비교하여추세를검토합니다。시각화를위해데이터에서주말부분은제거해보겠습니다。

idx = ~isweekend(data.Time);weekdayData =数据(idx,{“TemperatureF”“总”});图yyaxis情节(weekdayData。时间,weekdayData.Total) ylabel(“自行车数”) yyaxis正确的情节(weekdayData.Time weekdayData.TemperatureF) ylabel (“温度(\circ F)”)标题(“自行车数量和温度随时间变化”xlim([min(data.Time)) max(data.Time)])

图中包含一个轴对象。标题为Bicycle Counts and Temperature Over Time的axis对象包含2个类型为line的对象。

플롯에서통행량데이터와기상데이터가유사한추세를보이는것을알수있습니다。플롯을확대해보겠습니다。

xlim ([datetime (“2015-11-01”)、日期时间(“2016-05-01”)))

图中包含一个轴对象。标题为Bicycle Counts and Temperature Over Time的axis对象包含2个类型为line的对象。

추세가유사한것으로보아날씨가추울수록자전거를이용하는사람들이줄어든다는것을알수있습니다。

일과시간모두를기준으로분석하기

일이나시간등다양한간격을기준으로데이터를검토합니다。varfun을사용하여변수에대해그룹형계산을수행하면일별총자전거수를확인할수있습니다。总和함수를함수핸들로지정하고이름——값쌍을사용하여그룹화변수와원하는출력유형을지정해보겠습니다。

byDay = varfun(@sum,bikeData,“GroupingVariables”“天”...“OutputFormat”“表”
byDay =7×5表Day 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”}})传说({“西行”“往东的”},“位置”“eastoutside”) xticklabels ({“太阳”“我的”“星期二”“结婚”“星期四”“星期五”“坐”})标题(“按星期数自行车”

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

막대플롯에서주중에통행량이더많은것을알수있습니다。동쪽방향통행량과서쪽방향통행량에차이가있는것도알수있습니다。이는사람들이도시로올때와도시에서나갈때다른경로를이용한다는의미인것같습니다。또는일부사람들이특정날짜에도시로온후다른날돌아간것일수도있습니다。

시간을확하고varfun을사용하여그룹형계산을수행해보겠습니다。

bikeData。HrOfDay =小时(bikeData.Time);byHr = varfun(@mean,bikeData(:,{“西行”“往东的”“HrOfDay”}),...“GroupingVariables”“HrOfDay”“OutputFormat”“表”);头(byHr)
HrOfDay GroupCount mean_西向mean_东向_______ __________ ______________ ______________ 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”)包含(“一天中的一小时”) ylabel (“自行车数”)标题(“按小时计算平均自行车数量”

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

일반적출퇴근시간오전9시와오후5시무렵에통행량이최고치에달합니다。그리고동쪽방향추세와서쪽방향추세가다릅니다。일반적으로서쪽방향은케임브리지근교의주거지역과대학교로향하는경로입니다。동쪽방향은보스턴으로향하는경로입니다。

늦은오후에는동쪽방향보다서쪽방향으로향하는통행량이더많습니다。아마대학교일정과해당지역의식당가로향하는통행량때문것같습니다。시간과일모두를기준으로하여추세를검토해보겠습니다。

byHrDay = varfun(@sum,bikeData,“GroupingVariables”, {“HrOfDay”“天”},...“OutputFormat”“表”);头(byHrDay)
HrOfDay Day GroupCount sum_Total sum_西行sum_东行_______ _________ __________ _________ _____________ _____________ 0星期日56 473 345 128 0星期一55 202 145 57 0星期二55 297 213 84 0星期三56 374 286 88 0星期四56 436 324 112 0星期五55 442 348 94 0星期六56 580 455 125 1星期日56 333 259 74

일을변수로취하도록타임테이블을정렬하려면unstack함수를사용하십시오。

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

图中包含一个轴对象。标题为Bicycle Count by Hour and Day of Week的axis对象包含7个类型为surface的对象。

월요일부터금요일까지평일에는통행량이러시아워에최대치를기록하고저녁에는점점줄어드는유사한추세를보입니다。금일의경우통행량이줄어들지만전반적추세는다른평일과유사합니다。토요일과일요일은러시아워에통행량이최대치가아니며오후로갈수록증가하는서로유사한추세를보입니다。늦은저녁의추세도월일부터금일까지유사하지만금일에는통행량이줄어듭니다。

러시아워의통행량분석하기

하루전체시간의추세를검토하기위해러시아워시간값을기준으로데이터를분할합니다。离散化함수에여러시간값또는시간값단위를사용할수있습니다。예를들어,데이터를AMRush一天PMRush에대한그룹으로구분합니다。그런다음,varfun을사용하여그룹별로평균을계산합니다。

bikeData。HrLabel =离散化(bikeData.)HrOfDay,[0、6、10、15、19日24),“分类”...“我”“RushAM”“天”“RushPM”“点”});byHrBin = varfun(@mean,bikeData(:,{“总”“HrLabel”}),“GroupingVariables”“HrLabel”...“OutputFormat”“表”
byHrBin =5×3表HrLabel GroupCount mean_Total _______ __________ __________ AM 2342 3.5508 RushAM 1564 94.893 Day 1955 45.612 RushPM 1564 98.066 PM 1955 35.198
bar(byHrBin.mean_Total) cats = categories(byHrBin.HrLabel);xticklabels(猫)标题(“高峰时段平均自行车数量”

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

일반적으로이지역의저녁과아침러시아워시간대의자전거통행량은다른시간대에비해2배많습니다。이른아침에는통행량이매우적지만,늦은저녁에는아침과저녁러시아워를제외한낮시간과견줄만큼상당한통행량이있습니다。

참고 항목

||||||||||

관련 항목