主要内容

与高分组统计计算数组

这个例子展示了如何计算分组统计一个高大的时间表包含停电数据。这个例子使用了grouptransform,groupsummary,groupcounts函数来计算各种大量的利益,比如最常见的在每个地区停电原因。尽管本例中的原始数据只有1500行,您可以使用本文提供的技术更大的数据集,因为没有假设数据的大小。

创建数据存储和高的时间表

样例文件,outages.csv,包含数据代表在美国电力中断。文件包含六列:地区,OutageTime,损失,客户,RestorationTime,导致

创建一个数据存储outages.csv文件。使用“TextScanFormats”选项指定类型的数据每一列包含:分类(“% C”)、浮点数值(“% f”),或者datetime (“% D”)。

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

创建一个高表上的数据存储,和高表转换成一个高大的时间表。的OutageTime变量是用于行乘以因为它是第一个datetime或表中的时间变量。

T =高(ds);T = table2timetable (T)
T = Mx5高时间表OutageTime地区损失客户RestorationTime造成__________ ______ ___ _____售予_____ ?吗?吗?吗?吗?吗?吗?吗?吗?吗? ? ? ? ? ? ? ? ? : : : : : : : : : : : :

取代缺失的数据

一些行RestorationTime变量缺失的时代,由NaT值。从表中删除这些行。

T = rmmissing (T)“DataVariables”,“RestorationTime”);

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

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

使用ismissing确认没有块缺失数据留在桌子上。

tf =任何(ismissing (T)“所有”);收集(tf)
评估高表达式使用当地的MATLAB会话:通过1 4:在0.2秒完成,通过2 4:在0.58秒完成,通过3 4:在0.41秒完成,通过4 4:在0.45秒完成评估在2.5秒完成
ans =逻辑0

预览数据

现在数据不包含缺失值,带一个小的行数到内存数据包含的一个想法。

收集(头(T))
评估高表达式使用当地的MATLAB会话:通过1 1:在0.26秒完成评估在0.36秒完成
ans =8×5时间表OutageTime地区损失客户RestorationTime引起___________ _____,______ __________ ___________售予2002-02-01 12:18西南458.98 - 1.8202 e + 06 2002-02-07 16:50冬季风暴2002-02-07)21:15东南289.4 - 1.4294 e + 05 2003-02-17 08:14冬季风暴2003-02-17 05:44西434.81 - 3.4037 e + 05 2004-04-06 06:10设备故障2004-04-06 06:18中西部186.44 - 2.1275 e + 05 2002-03-18 23:23暴风2003-06-18 02:49西0 0 2003-06-18 10:54攻击2003-06-18 39西231.29 - 1.5354 e + 05 2004-06-20 19:16设备故障2004-06-20 19:28西311.86 - 1.5354 e + 05 2002-06-07 00:51设备故障2002-06-07十六23东北239.93 49434 2002-06-07 01:12火

地区平均停电持续时间

确定平均停电持续时间在每个地区使用groupsummary。首先,创建一个新的变量OutageDuration表中包含每个故障的持续时间,发现减去停机时间的恢复时间。在调用groupsummary指定:

  • “地区”作为分组变量

  • “的意思是”随着计算方法

  • “OutageDuration”作为操作变量。

T。OutageDuration = T。RestorationTime- T.OutageTime; times = groupsummary(T,“地区”,“的意思是”,“OutageDuration”)
* = Mx3高表地区GroupCount mean_OutageDuration ______ __________ ___________________吗?吗?吗?吗?吗?吗?吗?吗?吗?::::::

改变时间的显示格式的结果在天,并收集结果到内存中。结果显示在每个地区平均停机时间,以及在每一个地区发生的中断。

times.mean_OutageDuration。格式=“d”;* =收集(次)
评估高表达式使用当地的MATLAB会话:通过1 2:在0.97秒完成,通过2 2:在0.46秒完成评价在2秒完成
* =5×3表中西部地区GroupCount mean_OutageDuration _____ __________ ___________________东南东北138 34.135天548 24.21天2.4799 379 1.7013天西南25天西349 28.061天

最常见的地区停电原因

确定每个停电导致频率发生在每个区域。使用groupcounts导致地区变量作为分组变量。结果收集到内存中。

原因= groupcounts (T) (“原因”,“地区”]);原因=收集(原因)
评估高表达式使用当地的MATLAB会话:通过1 2:在0.28秒完成,通过2 2:在0.3秒完成评估在1秒完成
导致了=43×4表导致地区GroupCount ___________ _____ _____, ______百分比攻击中西部12 9.3815 0.83391袭击东北部135攻击东南东北126年1.3204袭击西方19日8.7561级地震0.069493级地震西1 0.069493能源应急中西部19 1.3204紧急东北29 2.0153能源应急东南79 5.4899西南7 0.48645应急能源应急西方46 3.1967设备故障中西部9 0.62543设备故障东北17 1.1814设备故障东南40 2.7797设备故障西南2 0.13899设备故障西方85年5.9069⋮

每个表中的原因发生几次,所以即使表包含正确的数据的格式不正确,看看通常发生在每个地区每个原因。为了提高数据的表示,unstackGroupCount变量,每一列对应于一个地区,每一行对应一个故障原因。

RegionCauses =收集(unstack(原因,“GroupCount”,“地区”,“GroupingVariables”,“原因”))
RegionCauses =10×6表导致中西部东北东南西南西替____ ___________和___________攻击12 135年126年南19日地震南南南1能量紧急79年29日19日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 70年冬季风暴17日36 1 19

不是所有的组合故障原因和区域中表示数据,所以结果表包含一些年代,填写与零值。

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)
评估高表达式使用当地的MATLAB会话:通过1 2:在0.23秒完成,通过2 2:在0.5秒完成评估在1.1秒完成
WorstOutages =43×4表中西部地区引起GroupCount max_Customers _____ ___________ __________ _________________攻击12 2.4403 e + 05中西部能源应急19 5.0376 e + 05中西部设备故障9 2.4403 e + 05中西部暴风30 3.972 e + 06中西部雷雨31日3.8233 e + 05中西部未知4 3.0879 e + 06中西部风力16 2.8666 e + 05中西部暴风雪17 7.7697 e + 05东北攻击东北135 1.5005 e + 05东北地震1 0能源应急29 1.5005 e + 05东北设备故障17 1.667 e + 05东北火5 4.5139 e + 05东北暴风东北139 1.0735 e + 06雷雨东北102 5.9689 e + 06年10 2.4983 e + 06⋮未知

中的数据结合起来地区导致变量为一个类别变量通过简单转换成字符串。然后,创建一个分类的柱状图的最大数量影响客户在每个地区每个原因。

WorstOutages。地区导致= categorical(string(WorstOutages.Region)+”(“字符串(WorstOutages.Cause) + +“)”);柱状图(“类别”WorstOutages.RegionCause,“BinCounts”WorstOutages.max_Customers,“DisplayOrder”,“下”)ylabel (“马克斯#影响客户”)

图包含一个坐标轴对象。坐标轴categoricalhistogram类型的对象包含一个对象。

另请参阅

||

相关的话题