表格数据的操作


原文地址https://knowledge.safe.com/articles/19645/tutorial-manipulation-of-tabular-data.html

    这篇文章介绍了一些用FME操作表格数据的不同工具。它包括:转置表格(transposing),汇总统计和总量(summary statistics and totals),数据透视表(pivot tables)和交叉表(crosstab)。这些操作在电子表格中经常被用到。比如Excel

    如果你的目标格式是Microsoft Excel,那么你可能想要利用FMEExcel写文件功能来写到一个模板文件里面。模板文件一般包含预定义的透视表、图表、命名范围等。参考Excel的读/写教程。下列例子中的工作空间(原文作者给出)

transpose2015.fmwt

transposeadvanced2015.fmwt

pivot-attributepivoter2015.fmwt

pivot-statisticscalculator2015.fmwt

一、 操作表格数据

    提到表格操作,我们常常会想到电子表格内的数据,比如Excel。但是,我们还可以对Microsoft Access表,CSV,或者其他的表格或数据库中的数据进行这些操作。通常的操作为:

      Transpose(转置):调换表格的行和列——有时称为表旋转。

      Summary Statistics(汇总统计):统计表格数据的总量和平均量。

      Pivot(透视表):也称作交叉表。透视表通常用于分析分类数据集。

1、 转置表格

    转置一个表格也就是将表格的列转换到行——在大部分情况下,不需要其他的数据操作或者统计汇总。比如:

     FME中,结合AttributeExploderAggregator两个转换器就可以达到转置的效果。转换器AttributeExploder会将标题名和值转换到一行,并且对每一个属性值,按照标题名/值对的方式将标题名和值构建成一个一个的要素。通过合并这些要素,你可以重新组建这个表的列,使之变成行。

     比如说,如果你的表格有两条记录:

 

  下面列出了将Excel表格进行转置的简单工作空间:


 

下列是此工作空间的关键点:

      AttributeExploder:设置Exploding Type: Feature. 则从原始表的两条记录中创建了六条新的记录。每个新的要素都由原始单元格的标题名/值对生成。如下所示:


 

     其中,“标题名”代表列或者属性名(_attr_name),“值”代表属性值或者单元格的值(_attr_value)

       Aggregator:重建标题名/值对成三条新的记录。设置Group By _attr_name. Attribute Accumulation设置List Nameattrs。则列表attrs{}就有要素:

 

    聚合的输出是一个新的要素,这个要素(一行)的值就是原始表格的列,它的列表属性 _attr{} 包含了初始表格的列值。

    如何将这个列表映射到输出?对Microsoft Excel来说,最简单的输出方法就是,用AttributeCreator或者AttributeRenamer去重命名属性名:ABC等等。

    更为复杂的是,如何将行按照正确的顺序写出。转换器AttributeExploder会打乱属性值的顺序,我们可以用转换器Sorter对转置表格的行进行排序。

     最终,就可以获得原始表格的转置表格。

   第二个转置表格的例子——例:transposeadvanced.fmwt用了上面例子相同的原理。在这个工作流里面,复杂的部分就是使得要素——headerdatatotals以正确的顺序输出。上述工作空间的每个转换器都加上了注释,以便读者理解各个部分的作用。

2、 汇总表格——统计

    你可以利用转换器StatisticsCalculator完成简单的数据统计。转换器StatisticsCalculator可以用来生成渐进的和对一系列的要素。参考文章:Calculating a Running Total or Cumulative Sum. 想要了解更多StatisticsCalculator 的细节,可以查阅FME Transformer Help.

      转换器Aggregator 也可以用于完成简单的数据统计。如果要素有几何形状,可以用转换器Aggregator计算加权平均值。

二、 透视表或交叉表

   当制作透视表或交叉表时,转换器AttributePivoter应该会是你的第一选择。这实际上允许你,像在Excel里面创建透视表一样,在FME里面创建透视表。

   转换器StatisticsCalculator能够对要素组(groups)作统计——可以用此创建透视表。

1、 Microsoft Excel创建透视表

下面是Excel电子表格和透视表的一个例子,在pivot_attributepivoter.fmwt的模板中,附上了这个Excel表格。


 

    上面是原始Excel表格和透视表的示例。

    如果你的输出格式是Excel,那么你可能想要应用FMEExcel写文件写出结果。

    下面的章节介绍了如何用FME达到透视的效果。

2、 用转换器AttributePivoter生成透视表

  在制作透视表或者交叉表的时候,应用AttributePivoter不失为一个好的选择。使用AttributePivoterStatisticsCalculater在某些方面有更大的优势。

    转换器AttributePivoter可以自动生成统计结果。同时,在创建透视表的时候,有时很难预测输出数据的格式。当你创建透视表的时候,会生成新的属性列,比如说上例中的“Average of observed”,AttributePivoter增加了动态属性,使得写出透视表变得更加容易。

    转换器AttributePivoter的一个缺点就是,在现有的FME版本中,你只能对其中的一个属性作此应用。如果你想要对更多的属性作分析,那你可能需要考虑StatisticsCalculator方法——阅读下个章节。

    使用AttributePivoter的一个工作空间的例子如下:


 

      上面是转换器AttributePivoter生成透视表的过程,示例请下载pivot_attributepivoter.fmwt.

   想要了解AttributePivoter的各项配置,请参阅转换器文档。在上面的例子中,被透视的属性为observed”。数据是由“region”和“potential”作分组属性的。行分组的顺序是很重要的,因为这会影响到Summaries是如何被创建的。“Group Rows By”属性顺序是由“Select Group Rows By Items”的图框窗口决定的:

 

     显示结果如下(高亮部分为手动添加):


    你还可以使用Group Columns By”参数去创建更深层次的列透视,在这个例子里面,使用“potential”属性,得到结果:


 

 

3、 StatisticsCalculator创建透视表

    下面的工作空间通过按照属性region”和“potential”分组,对属性“observed”作StatisticsCalculator统计。则新的统计要素按照“region”和“potential”排序,然后输出到一个CSV文件里面。输出的CSV文件跟Excel透视表有相同的属性和值。


 

      上面的模板可从pivot_statisticscalculator2015.fmwt下载。

   在上面的工作空间中,使用了两个StatisticsCalculator。第一个StatisticsCalculator对每一个“region”和“potential”生成统计量,第二个StatisticsCalculator对所有的数据统计总量。如果对“potential”属性作小计,需要第三个StatisticsCalculator。运行结果如下:

 

      复杂的部分就是输出要素的顺序,以及输出数据的格式。

4、 转换器AttributePivoter VS 转换器StatisticsCalculator

     AttributePivoterStatisticsCalculator两个方法,你会使用哪一个?

   首先说一说AttributePivoter的优点:

     两个或者更多的StatisticsCalculator才能完成的任务,一个AttributePivoter就可以完成。

     作总量统计时,你可以用AttributePivoter自动创建,而用StatisticsCalculator,你需要对每一个层级的总量作统计。

     按照你的要求生成格式,使得输出变得更容易。

     行的顺序可以保持下来,如果使用StatisticsCalculator,你需要自己进行排序。

      AttributePivoter最主要的缺点就是,在现有的FME版本中(2015及以前),AttributePivoter只能对一个属性生成统计量。所以,如果你想要对更多的属性进行统计,你需要转换到更复杂,但是更通用的StatisticsCalculator方法上来。

    然而,如果你的输出格式为Microsoft Excel,那么你可以考虑使用Excel写文件加上一个模板文件来构建透视表,这个方法会在FMEExcel中得到更好的结果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值