编者按:这一篇我将详细的介绍Tableau  Prep 中非常重要的功能Pivot转置,它帮助我们把“表哥表姐”们的二维表转化为一维表,从而进一步的分析。

本文包含三个部分:pivot功能说明、pivot功能实现、嵌套转置的功能实现。

一、功能的说明

Pivot数据这个功能隶属于数据的Clean and Shape 阶段,主要用于把多个数据列改为数据行显示;类似于excel的数据透视图,直接的意思就是旋转表,prep中用了一个形象的图形传达了它的功能。

转置.png

我们看一下官方说明:

Pivot your data 转置你的数据

Sometimes analyzing data from a spreadsheet or crosstab format can be difficult in Tableau. Tableau prefers data to be “tall” instead of “wide”, which means that you often have to pivot your data from columns to rows so that Tableau can evaluate it properly.

【翻译】有时候,使用Tableau分析电子表格或者横向表格(交叉数据)的数据会遇到一些困难。Tableau更倾向于数据是一行一行的“高高的数据”(行数据),而不是一列一列的“很宽很长的数据”(列数据),这就需要我们把列数据转置为行数据

With Tableau Prep, you can pivot on one or more groups of fields to get the results you want from your data. Simply select the fields that you want to work with, pivot the data from columns to rows, and then interact directly with the results to get your data looking just the way you want it.

【翻译】在prep中,你可以转置一个或多个数据字段,从而获得你想要的数据。仅需要选择你想要的数据字段,从列转置为行数据,然后就可以与数据结果交互寻找你想要的分析结果。

强迫症地说一下Pivot的翻译

在刚刚推出的prep的中文文档中,官方把pivot翻译为“透视”,果然是中了Excel的邪,prep翻译者高概率也是表哥、表姐一组。

在Excel中,把Pivot  Table 翻译为“数据透视图”就很鸡贼,很多人用了很久也不知道何为透视,只知道这个功能能组合想要的二维报表,从行和列两个维度看数据概括;而且,在Excel的数据透视图中,列字段和行字段是可以随时拖拽改变位置的,这多少也应了pivot的本意——旋转。

相对于“透视”这个翻译,我更喜欢Excel自定义粘贴中的一个词——“转置”,通过这个功能,可以把几行数据转为几列数据,反之亦然。

说到Tableau Prep,这里的pivot只是把行数据转为列,你看它的图标多形象。

既然如此,加上大家对“何为透视”的莫衷一是,我强烈建议把pivot的翻译改为“转置”,虽然这样不太具体,但总比“透视”好多了;如果想要更加准确,不妨就翻译为“行转置为列”。

 

理解pivot:从“交叉数据”到Tableau行数据

上面有些地方有些生涩,我们可以从Excel的基础说起,说明pivot的功能。

  • Tableau的“转置”,主要用于清理Excel的数据透视图或其他“交叉”表数据;(如下图)
  • 这种表的特征是:数据是面向“列”的,多个列属于同一个分类(或者说具备同一个属性),列首标题是分类名称,然后下面是数值。比如下图,三个列标题(数学、科学、历史)都是学科,然后下面数值是学科分数。

v2-1610f04720b4cb23932ecd876b3308de_hd

  • Tableau的数据是数据库数据,是一维的,是面向“行”的,每一行应该是一条完整的数据;
  • 在Tableau prep中,提供了一个列转换为行数据的工具——pivot;可以最快的方式,把行数据转为列数据,也就是变为下面的格式:

v2-3b8114d842367ca1511a78a79bfb4b08_hd

二、Pivot转置(无嵌套转置)

我们先说一个简单的转置,就像上面的例子,把三门学科的列数据,改为三门学科的行数据。

第一步,在“数据流”界面,插入 pivot步骤

prep pivot 1

第二步,将左侧字段拖入到右侧 转置字段区域(如下图箭头)

这是你会发现右下角的数据预览区域,增加了两个列字段,pivot1 Name和Pivot1 Value,分别对应列的标题和列的数值。后面我们可以修改自动生成的表头。

prep pivot 2

第三步,将多个独立的字段拖入到右侧字段;并修改字段名称。

成功把math数据转置之后,我们接着把另外的两个字段,science和history从左侧拖到右侧pivot字段;这样右下角的预览中就会增加来更多行数据。当然熟悉之后,你可以一次性拖动三个字段。

同时,你会发现还是只有一个pivot1 name和pivot1 value;此时双击这两个字段名称,可以重命名为“subject”(学科)和“score”(分数)。

prep pivot 3

这样,我们就把列数据转化为了行数据。从而为后面的数据分析做了准备。面对上百万的数据,处理逻辑也是一样的。

上面的拓展,适用于多个列都是一个大的分类,比如说多门学科,这样转置之后,都在一个分类名称下面。

假设我们的列数据分别属于多个大分类呢?

 

三、pivot转置(高级多层嵌套)

在Excel中我们经常见到合并单元格,一个标题下面五个分标题;两个大标题还有并排。比如说我这里有一个数据表,展示了各个医院中从1月到12月份的孕妇建册量和婴儿出生量。

pivot 表哥

我们要把横向的“月份数据”转为列,把月份作为一个列字段,把出生量和建册量作为两个列字段。

Tableau prep支持多层的转置,把多个字段共同的属性字段(比如上面的月份)转置为列字段,原来的总表头(出生量和建册量)共用转置之后的列字段(月份)。

官方在help文件中只是发了一个动图,没说明白(=我没看明白),所以我自己做了一下的演示。这是我把出生量和建册量两个字段都拖入之后的界面(特别注意左右月份要一致)

屏幕快照 2018-08-14 上午9.39.31.png

Prep会自动把pivot字段和数值字段重命名(当然你也可以关掉),最后的结果是这样的(选中一个医院为例子)。

屏幕快照 2018-08-14 上午9.41.42.png

这样,我们就实现了月份字段从行字段转置为列字段,同时让之前嵌套月份的两个一级表头(出生量和建册量)共用了这个月份字段。下面有一个演示的动图,不够清晰,看看步骤吧。

pivot双层嵌套 小.gif

总结嵌套表格转置的要点:

1、提前修改你的Excel非常重要,如果有两层表头,第二层就会用F1~F2~F…代替,给数据清晰增加难度;合并的单元格表头只是一个字段,后面会被F填充。

屏幕快照 2018-08-14 上午9.47.03

前几天做workshop活动,有人问,不会Excel可以直接学习Tableau 吗? 可以的,但是你迟早还要补充Excel的知识,因为Excel的基础使用规范其实已经成为一种数据处理的规则;而且我们大部分数据,还是Excel格式的。

2、一次转置无所谓字段顺序,但是两次转置,需要注意左右的顺序是需要一样的(Tableau根据选择和点击顺序来排列);

3、pivot环节只是转置,有些字段不能重命名,那就再增加一个step修正。

4、在一个pivot中增加多个pivot value,相当于一个列字段后面增加多个属性;不能用两个pivot step来代替。如下图,16个医院,在出生量转置时有206rows数据,两次pivot之后,数据量变成连2k rows,也就是206行增加到了2000多行。因此这不是捷径,而是错误之路。

屏幕快照 2018-08-14 上午9.49.42.png

我喜欢Tableau的flow面板,这里面有数据的无穷乐趣。快来探索吧。

屏幕快照 2018-08-14 上午9.53.21.png

喜乐君s Jinan

7 Aug 2018
9 Aug 2018 revise
14 Aug 2018 update part2