一维表、二维表那些事
上次带大家见识了几个制表时最常见的误区,提出了四条规则
要想通过一次讨论就把所有误区都说清楚也不现实,有些坑还是要自己踩自己跌自己爬,挫败感是学习成长道路上的二师兄——有些讨厌,却少不了他 假如你面对这些坑,腾挪辗转收放自如,那恭喜你,离玩转Power BI又近了一步  今天想谈谈一维表和二维表。这两样如果搞不清,数据清洗时仍然会陷入事倍功半的泥潭 什么是二维表? 看下图,确定一个数值,必须通过行列两个条件去定位,这是二维表最显著的特征 那什么是一维表呢? 像下面左图这种仅需通过单行就能确定数值的,被称为一维表。为了方便浏览打印美观,很多人会把重复姓名合并单元格,如下面右图(合并单元格只是格式美观,对数据清洗反而是一大障碍,会耗费额外时间精力) 为什么表格会有一、二维之分呢 大家还记不记得小时候最早接触到表格是什么样?对,就是学校的课程表。用二维表样式来制作课程,是再合理不过了。这张伴随学生时代的课程表,给人留下的印象太深,即便到了工作岗位,表格的制作和打印,也大都是二维表样式
 那一维表是怎么来的,为什么会出现这样一种有大量重复,反人性的表格样式? 最早接触一维表的,是那些数据库从业者,因为一维表大都是系统自动生成的。但凡从系统里导出来的表,不管是XLS还是CSV,都是一维表样式 换句话说,一维表是符合数据库设计规范的——数据库设计规范是一套参考体系,在技术世界里不分国界地沿用了超过三十年 你只要知道,需要行和列来定位数值的,就是二维表;仅靠单行就能锁定全部信息的,就是一维表 当然,一维表、二维表可以相互转换。一维转二维用透视表,反之用逆透视 我们把一维表称为源数据,特点是数据丰富详实,适合做流水账,方便存储,有利于做统计分析;二维表称为展示数据,特点是明确直观,适合打印、汇报 依然用之前的示例(全国影城数据)来演示
这是系统导出的一维表,全国上万家影城,2019年上半年各月的人次明细,总计有六万多行,地理维度有省市区三层 一维表显然不适合人类阅读,想了解汇总信息,只能通过透视功能转换为二维表。一维表信息越详实,二维表可展示的方式就越灵活 回到数据清洗这个环节上来 实际工作中,我们拿到的数据大多是手工制作的二维表——注意,是手工制作,而不是透视过来的二维表,两者最大的区别就在于,手工二维表,存在大量“脏”数据,最典型的就是前文提过的“制表坑” 一个最显著的特点,就是存在大量合并单元格。二维转一维过程中,合并单元格是恶魔 但光你自己明白合并单元格的利弊并没什么L用,要知道,做数据分析时,数据的来源千差万别,如果都是系统导出的倒还好,清洗起来没什么工作量,就怕是那种各部门提交过来的手工电子表,他们只图自己工作方便,制表随意性造成了大量不确定因素,使你的清洗工作量成倍增加 关于数据清洗的经验与技巧,可以单独写本书,况且外面也已出版了很多Power Query的书籍,网上也有很多PQ方面的收费课程,学习门槛几乎可以忽略  这里就举个小示例,演示一下行列都有合并单元格的情况下,如何二维转一维
链接:https://pan.baidu.com/s/1p7OfC3-BkqpYw74pbzj0YA
提取码:g3j2
1、直接从EXCEL里导入PQ界面
PQ自动打开后,数据已导入,你会发现,之前合并单元格的地方,已被null占据

2、第一次“向下填充”选择前三列,“向下填充”


3、第一次转置通过“转置”功能,把月份人次场次,行转列


4、第二次“向下填充”选中第一列月份,依然“向下填充”,把null覆盖掉

5、列合并将前两列暂时合并,方便后续处理(你也可以试着不合并,看后面操作能不能继续下去。如果不能,究竟卡在什么地方,为什么出卡住,再回过来想一下,这步合并的缘由自然就水落石出)


6、第二次转置行列恢复如初

7、首行提升为标题,逆透视将第一行提升为标题。选取前四列,点击“逆透视其他列”


8、拆分列将之前的合并列拆分,还原成两列



至此,二维表转一维表过程结束(注意修改列名)
接下来就可以建度量值拉图表搭建可视化页面了
|