Search

5️⃣

空值和特殊值: Null and Special Values

什么是空值以及空值是什么产生的?

1.1 什么是空值?

空值在原始数据当中以null的形式显示,如果你不熟悉这个设定, null并不是一个值,而是系统必须显示点什么让你知道这是一个空值。

null是数据中最常见的空值形式,对空值的处理是也是每个Tableau使用者的必修课之一。 空值就是在一个Table当中某个cell没有值。

空值是如何产生的?

  • 第一种是作为原始数据,它没有被录入到系统中
  • 比如你输入一个产品的信息,但是你不知道来自于供应商的哪个工厂,在factory这一栏你就没有填入任何信息,那么这个产品的factory在数据里就是空值。

  • 第二种往往来源于join. 比如你有一个customer的ID,但是这个customerID并没有出现在另一个customer的表中,当你把这两个表进行join的时候,自然就找不到有关这customer的其他信息。
  • 第三种来自于计算,如果我们使用除法,然后分子是0或者是null,那么用任何数除以0所得到的都是空值

2. 为什么我们需要特别警惕空值?

Tableau与其他编程语言一样,涉及null的计算都需要注意因为如果计算的过程当中包含了null那结果也是null。换句话说,1 + null = null 不等于0.

null 不会被计入到COUNT当中,假设我们有一个表格, 如果想要知道有多少个Customer,一般会COUNT([CustomerID]) 而[Customer ID]当中有一旦有null的话,那一行就会被跳过

image

3. 怎么解决null的问题?

Tableau里提供了一个叫ZN( )的函数,它的多用是将一个column里边的null值来转化为0. 我在这里停顿五秒钟,你思考一下, 为什么这个将null转化成0的函数叫ZN( )呢,如何确保你下次想起来这个函数的时候,能记得它叫ZN( )呢? 在所有的学习过程当中,理解之后,在使用的时候能够记住也是极为关键的。

思考一秒钟。。。

思考两秒钟。。。

思考三秒钟。。。

思考四秒钟。。。

思考五秒钟

时间到

好了,时间到。 ZN是Zero if Null的缩写,所以是ZN( ) 你记住了吗?如果你熟悉SQL, COALESCE( )函数有点跟它的功能类似。

如果你使用的数据当中某个column有空值,养成习惯,先创建一个用ZN( )函数转换过的column,然后用转换过的column来创建所有的计算,这个能避免你在后边去单独修改每个计算。

你以为这一课到这就完了吗,天真。

4. 空字符 Empty String

空字符和空值这俩绝对是卧龙凤雏。空字符是指你说它不是一个字符吧,人家可是正经的字符变量,你要说它是字符吧,它里边毛都没有。

跟null类似,有时候就是这个column创建了,但是就是什么都没输入进去,比如让你填表的时候,你一下看到一栏叫精神面貌,这下你楞住不知道该填啥了。你狠狠思索,要不填个少先队?但是你犹豫了,决定先缓一缓。就在此时,你的这个操作就产生了一个空字符。

空字符和空值是不一样的,空值有时候反而有奇效。你的骚操作离不开他

在字符那一课我讲过,一个字符串可以理解为一个个单个字符的集合,那如果你想让哪一个字符piu~一下的消失,你能拿个橡皮上手就给它擦了么,你不能。

你唯一能做的就是用一个空字符来取代它,告诉那个字符: 对不起,你被这个空字符给优化了。这是一种非常常见的数据清洗思维。 咳咳,这是知识点,可能考嗷

空字符,如果用一个表达式输入的话就是两个单引号: ‘ ‘

5. 消失的她

image

不少同学看到这个标题立刻精神一振。我要是不用这个标题,估计你们肯定已经开始溜号了.

请听题:公司让我们计算“几年平均每台卡车一年交多少罚款”。你手里有一张表,列着车牌号和今年已交的罚款。此刻你要做什么?马上算平均吗?等五秒钟。

1s... 2s... 3s... 4s... 5s 时间到。

你该先问:这张表包含公司所有卡车吗?那些全年守规矩、零罚款的“文明司机”在不在表里?难道每个司机每年一定都会被罚吗?

如果里边只有10台卡车的罚款, 但是全公司的车队有100卡车, 我们的计算是不是应该把这一百台卡车都包括在内?

数据从来不止是“看得见的”。还有那位“消失的她”。你的计算,真的把她算进来了吗?所谓“消失的她”,不是某个高深的技术点,而是一种数据分析师的基本素养与警惕:很多问题必须把“没出现的数据”与其他数据一起思考。只有这样,结论才站得住。