Tableau基礎 | 如何應對Excel的格式

這篇說說數據格式的那些事,原文來自tableau官方的KB(knowledge base),點擊這裡鏈接到原文。

先提問:

為什麼我從excel導入的數據做不出想要的樣子? tableau好難啊,猝!

為什麼excel簡簡單單的圖表到tableau中反而這麼複雜? tableau好low啊,猝!

主要原因有兩個:

tableau是所謂的面向列的軟體

tableau只是對數據敏感,對Excel的格式是無興趣

對於「面向列」的軟體這個說法,以後再介紹,這裡專心聊聊Excel的哪些使用習慣,是tableau無法消化的。

可視化分析,作為一個工具,不論你是用來幫助決策,又或者是僅僅是為了PPT的美觀,這都不重要,重要的是,並不是所有的文件直接拖進tableau就可以瞬間變得美麗。這是需要條件滴。

一千個讀者眼裡有一千個哈姆雷特

一千個同事,就有一千種Excel格式

日常工作中,滿天飛來飛去的Excel表格,你肯定見過很多形式組織的數據表。

tableau在V10版本內嵌了一個工具,Data Interpreter,作用是自動去適配一些Excel中的格式。在數據不是特別複雜的情況下,你其實可以通過Data Interpreter 自動處理,但它並不能百分之百解決這些問題。

tableau通過KB發布了這篇文章,總結了常見的不合適的格式,強烈建議大家按照這些建議規整數據。比如,請不要使用合併單元格、居中、字體這些擴展信息。因為這些擴展的信息是Excel私有的,tableau並沒有兼容這些格式化的信息,所以這些格式化信息對tableau是無用的,有的時候甚至是阻礙。

如下表的「郵寄方式」就是一種典型的「合併單元格」:

那麼,開始正題,按照如下順序聊聊讓tableau抓狂的數據格式:

  1. 數據透視表樣式數據的優化

  2. 去掉Sub-total

  3. 去掉表格首行的介紹

  4. 將分層的多層標題,轉成單行標題

  5. 刪除空行

  6. 補充空的欄位名字

1. 數據透視表

當數據的結構是參照數據透視表結構,或者叫交叉表(cross-tab format)結構,那麼這種表是面向「列」的。也就是說,每一列的列首是媽媽,後別帶著一群孩子。比如下表的數據,Math學科名是媽媽,分數(90、50、50)是孩子。我們關注的數據以這樣一個方式,變數名被存儲位為列標題。

而在tableau中,它則是類似資料庫結構一樣的,面向「行」存儲。

比如下面這個表格,就是所謂的數據透視表樣式的,「面向列」的表格

注意,面向列的特點在於,三個學科的成績---math, science,history---是以三列單獨存在

回想一下,生活中遇到的各種統計信息嗎,是不是大多是這樣的?

會議記錄

消費統計

匯總報告

再來看看tableau中面向行應該是什麼樣子。

我們遵循這個原則

一般的,我們將具有同一類屬性的數據記錄在相同的欄位

源數據中,math、science、history是三個學科的名字,同屬於一件對象,就是「學科」(Subject),所以將這三科的成績組合在一起,新建一列標題為"Subject",同時,再命名一個列,叫做分數"Score"

修改優化後的結構如下:

2. 去掉sub total

我們日常所用的數據,為了便於閱讀,往往會在表格底部或者右邊做匯總處理(如下圖)subtotals 或 grand totals.,但是這些匯總處理在tableau中,其實是無用值,我們需要把它去掉。

換句話說,數據中包含了總計、平均、中位數等等聚合

有人說了,我是需要這個總計的啊,不能移除!

別急,正確的做法應該是:

將這一行匯總移出

然後將excel數據連接到tableau

使用tableau內置的匯總計算生成subtotals 或 grand totals

你可以這樣理解,讀入tableau數據都是最原始的客觀記錄數據,不需要任何二次計算,因為在tableau中這些二次計算都是最基本、最簡單的功能。

修改優化後的結構如下:

3. 去掉表格首行的介紹

Excel在郵件中往來,在表格頂端加上描述語言,其實是很有利於閱讀的事情。而在tableau當中就不一樣了,它只關心數據,不關心數據以外的事情,比如介紹。

比如下表,第1列中,包含了這篇報告的名字和日期,這一塊數據就是所謂的introductory text

所以在這個案例中,標題和日期信息需要被移除掉,修改優化後的結構如下:

如果你一定要看到日期和,報告的名字,tableau中是可以設置標題和文字注釋的。

總之,給tableau數據,它只認識結構完整的數據

4. 將分層的多層標題,轉成單行標題

一類數據中,包含著更上級的數據。比如下表,1-5的數據都是隸屬於California,所以作者在大表的頂端增加了California。

一般情況下,tableau需要只有第一行表頭,就是是你的excel數據表頭

因為,如果你的數據包含了多層表頭,分析可能會出現問題。比如你的,報表欄位包含了主要分類和次要分類,這種情況下,一定要將雙層表頭,變成單層表頭。

修改方法很簡單,你可以創建一個新列,名字就是California。

修改優化後的結構如下:

5. 刪除空白單元格

上一個案例,我們將雙層表格轉換成了單層,有時候會遇到沒有全部填充的情況,會出現空單元格,這是肯定有誤的,如下:

* 注意:不能留有空白單元格,需要填充,記住tableau是以行為單位去讀取數據的

假如ID 2對應的state沒有填充California,它是不會去讀取ID 1的state的。

而我們需要的是將這個新列的數據向下填充,保持每行的數據都有這個欄位,保持一致。如果是不重要的數據,一定要將它移除。

修改優化後的結構如下:

同樣,數據中間也不能存在空行,需要移除,如下是錯誤的:

6. 欄位行首不能為空

既然state中間不能有空白數據,那麼行首的單元格,也就是表頭也不能為空。

如下表的第二列的首行kongbaish

其實如果你的行首為空,又或者是有重複欄位名,tableau在讀入數據的時候會自動將空的欄位名補全一個默認的名字,但是你有可能混淆,不方便分辨,所以建議在原始數據excel中,將欄位補全。

如下是原始數據,首行並未設置

如下是tableau自動補全的欄位名,使用Fx依次填充(x=1,2,3,4.....):

Peace!

推薦閱讀:

請問如何在長文本每一行的前面和後面都插入特定的相同字元或文本?
Excel 怎麼設定在整個文件中查找,而不是在一個 sheet 中查找?
VBA已經過時了嗎?
Excel中怎樣把類似161029,這樣的數字批量變成2016/10/29這樣的日期格式?

TAG:TABLEAU | MicrosoftExcel |