主要内容

用高数组进行分组统计计算

这个例子展示了如何计算包含停电数据的高时间表的分组统计信息。示例使用grouptransform团体ummary,GroupCounts.函数计算各种数量的兴趣,如最常见的停电原因在每个地区。尽管本例中的原始数据只有大约1500行,但您可以在更大的数据集上使用本文介绍的技术,因为没有对数据的大小做任何假设。

创建数据存储和高时间表

示例文件,中断.CSV,包含了美国电力供应中断的数据。该文件包含六列:地区OutageTime损失客户RestorationTime,原因

创建一个数据存储区中断.CSV文件。使用“TextScanFormats”选项指定每个列包含的数据类型:分类(“% C”),浮点数字(“% f”)或DateTime(“% D”)。

data_formats = [“% C”“% D”“% f”“% f”“% D”“% C”];ds = tabularTextDatastore (“outages.csv”“TextscanFormats”, data_formats);

在数据存储的顶部创建一个高大的桌子,并将高表转换为高度的时间表。这OutageTime变量用于行时间,因为它是表中的第一个datetime或duration变量。

t =高(DS);t = table2timetable(t)
T = Mx5高时间表OutageTime地区客户RestorationTime造成损失  __________ ______ ____ _________ _______________ _____ ?????????? ? ? ? ? ? ? ? ? : : : : : : : : : : : :

取代缺失的数据

一些行中RestorationTime变量缺少时间,由此表示值。从表中删除这些行。

T = rmmissing (T)“datavariables”“RestorationTime”);

对于时间表中的数字变量,而不是用缺失值删除行,替换每个区域的平均值的缺失值。

T = grouptransform (T)“地区”“替换”, (“损失”“顾客”]);

不见了要确认表中没有缺少数据。

tf =任何(ismissing(t),“所有”);收集(tf)
使用本地MATLAB会话评估高表达式:-通过1的4:在0.21秒完成-通过2的4:在0.57秒完成-通过3的4:在0.43秒完成-通过4的4:在0.59秒完成评估2.7秒完成
ans =.逻辑0

预览数据

既然数据不包含丢失的值,那么将少量的行放入内存中,以了解数据包含的内容。

聚集(头(t))
using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.29 sec
ans =.8×5时间表OutageTime地区客户流失RestorationTime原因________________ _________ ______ __________ ________________ _______________ 2002-02-01 12:18西南458.98 1.8202e + 06 2002年2月7日16:50,冬季风暴2003-02-07 21:15东南289.4 1.4294e + 052003-02-17 08:14冬季风暴2004-04-06 05:44 West 434.81 3.4037E + 05 2004-04-06 06:10设备故障2002-03-16 06:18中西部186.44 2.1275E + 05 2002-03-18 23:23严重风暴2003-06-18 02:49 West 0 0 0 2003-06-18 10:54攻击2004-06-20 14:39 West 231.29 1.5354E + 05 2004-06-20 19:16设备故障2002-06-06 19:28 West 311.86 1.5354E + 05 2002-06-07 00:51设备故障2003-07-16 16:23东北239.93 49434 2003-07-17 01:12火

按地区的均值持续时间

确定每个区域中的平均停电持续时间团体ummary.首先,创建一个新变量OutageDuration在包含每次中断持续时间的表中,通过从恢复时间中减去中断时间得到。在号召中团体ummary指定:

  • “地区”作为分组变量

  • “的意思是”作为计算方法

  • “除错量”作为要进行操作的变量。

T.OutagedUration = T.Restiontime  -  T.OutageTime;Times = Globanummary(T,“地区”“的意思是”“除错量”
* = Mx3高表地区GroupCount mean_OutageDuration  ______ __________ ___________________ ?????????: : : : : :

将持续时间结果的显示格式更改为以天为单位,并将结果收集到内存中。结果显示了每个区域的平均中断持续时间,以及每个区域报告的中断数量。

times.mean_OutageDuration。格式=“d”;时代=聚集(次)
使用当地MATLAB会话评估高表达: - 第1条:1/2:在1.1秒内完成 -  PASS 2的2:在0.49秒的评估中完成2秒
* =5×3表地区GroupCount Mean_outageuration _________ ________________ ___________________ _ _____________ _中西部138 34.135天东北部548 24.21天东南379 1.7013天西南25 2.4799天西349 28.061天

按地区分类的最常见停电原因

确定每个区域中每个停电原因发生的频率。用GroupCounts.原因地区变量作为分组变量。将结果收集到内存中。

原因= groupcounts(t,[“原因”“地区”]);原因=收集(原因)
使用本地MATLAB会话评估高表达: - 通过第1条:在0.26秒内完成 -  PASS 2的2:0.32秒评估完成0.8秒
原因=43×3表导致地区集团________________________________攻击中西部攻击135攻击东北攻击西部126地震东北地震西部1能源紧急东南79能源紧急东南79能源应急西部46设备故障9个设备故障东北17装备故障东南40装备故障西南2设备故障西85⋮

每个原因在表中发生了几次,因此即使表包含正确的数据,它也不是正确的格式,看看每个区域中每种原因发生的频率。要改进数据的演示,请不要填写GroupCount变量使得每列对应于区域,并且每行对应于中断原因。

RegionCauses =聚集(unstack(原因,“GroupCount”“地区”)))
RegionCauses =10×6表导致中西部东北东南西南西方  ________________ _______ _________ _________ _________ ____ 攻击12 135年126年南19日地震南南南1 79年能源应急19日29日7 46设备故障9 17 40 2 85火南5 3南17暴风30 139 132 6 22雷雨31 102 54 6 7未知4 10 3南4风力16 40 13 3 22冬季风暴17 70 36 1 19

数据中并没有表示所有中断原因和区域的组合,因此结果表中包含一些s。填写零的值。

RegionCauses = Fillmissing(RegionCauses,“持续的”,{"",0,0,0,0,0})
RegionCauses =10×6表导致中西部东北东南西南西方  ________________ _______ _________ _________ _________ ____ 攻击12 135 19 0 0 1 0 0 1 126年地震能量紧急79年29日19日7 46设备故障9 17 40 2 85火5 0 3 0 17暴风30 139 132 6 22雷雨31 102 54 6 7未知4 10 3 0 4风力16 40 13 3 22 70年冬季风暴17日36 1 19

每个地区最差的停电

计算每个地区每次停电对客户的最大影响。

WorstOutages = groupsummary (T) (“地区”“原因”],“马克斯”“顾客”);WorstOutages =收集(WorstOutages)
using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.33 sec - Pass 2 of 2: Completed in 0.52 sec
WorstOutages =43×4表区域原因GroupCount max_Customers _________ ________________ __________ _____________ MidWest attack 12 2.4403e+05 MidWest energy emergency 19 5.0376e+05 MidWest equipment fault 9 2.4403e+05 MidWest severe storm 30 3.972 2e+06 MidWest thunder storm 31 3.8233e+05 MidWest unknown 4 3.0879e+06 MidWest wind 16 2.8666e+05 MidWest winter storm 177.7697e+05东北袭击135 1.5005e+05东北地震10东北能源紧急事件29 1.5005e+05东北设备故障17 1.667e+05东北火灾5 4.5139e+05东北强风暴139 1.0735e+06东北雷暴102 5.9689e+06东北不明10 2.4983e+06⋮

将数据结合在一起地区原因通过简单地将变量转换为字符串,将它们转换为单个分类变量。然后,创建一个分类直方图,显示每个区域中每种原因的最大受影响客户数量。

WorstOutages。地区原因= categorical(string(WorstOutages.Region)+”(“+ String(WorStoutages.Cause)+“)”);柱状图(“类别”, WorstOutages。RegionCause,“BinCounts”,worstoutages.max_customers,...“DisplayOrder”“descend”) ylabel (“最大影响客户”

另请参阅

||

相关的话题