好的表格讓你玩轉資料科學,壞的表格讓你資料苦學! Dax – Power BI 數據工坊
長表格與寬表格,使用的目的大不同,大家在做資料視覺化的過程中,有沒有經常覺得資料不經使喚,想要製作長條圖、折線圖或圓餅圖,卻不知道該使用哪些欄位? 此篇文章將會透過台灣交通部觀光局的公開資料讓大家了解長表格與寬表格差異與使用的場景。
快速導覽 |
一、寬表格 |
二、長表格 |
三、寬表格 vs 長表格 |
四、長表格真的這麼好用? |
五、結語 |
一、寬表格
上面的表格是來自於觀光局的歷年來臺旅客按性別分 Visitor Arrivals by Gender。寬表格是資料視覺化的一種報表,因此寬表格的特性是每一列(row)包含多個觀察值,如上圖每一列同時包含女性與男性觀察值,其優點是可以呈現的資訊量多,缺點是視覺效果差。但只要在寬表格外面套上一層視覺化,一切都會如下圖變得更美好!
二、長表格
長表格如上圖是乾淨的資料(tidy data),其特性是每一列(row)只包含一個觀察值,根據RStudio的首席資料科學家Hadley Wickham在Journal of Statistical Software中所定義乾淨的資料需要符合以下三項:
- 每一個變數(variable)構成一欄(column)
- 每一個觀察值(observation)構成一列(row)
- 每一張表(table)只包含一種觀察單位(observational unit)
這次來自於觀光局的歷年來臺旅客按性別分 Visitor Arrivals by Gender就違反了第2點,同一列包含女性與男性的觀測值,因此轉換成長表格就符合乾淨的資料了。(合計人次、男性占比與女性占比三個欄位皆能從來臺人次計算出來,因此在轉換的過程中也都刪除了。)
三、寬表格 vs 長表格
既然寬表格是一種資料視覺化(報表),而長表格是做為清理乾淨的原始資料,則兩者之間就存在轉換的關係,流程如上圖。我們可以輕鬆的透過樞紐分析將長表格變化為寬表格(報表),若再套上一層外皮,則可以變成視覺效果更強的圖表!而一般我們在公司所拿到的資料或在公開資料(Open data)所下載的資料,經常會拿到寬表格的格式,若要將寬表格轉換成長表格,可以使用Power BI的Power Query的取消樞紐分析功能來完成;在Python中則可以使用pandas套件的melt方法來完成;在R中則可以使用tidyr套件的gather來完成。
四、長表格真的這麼好用?
有著長表格的Power BI有如打通任督二脈一般,什麼圖表都能做出來!但光說不練是無法使人信服的! 以下將使用2個觀光局開放資料來示範:
1. 歷年來臺旅客按性別分 Visitor Arrivals by Gender
性別維度只有2個,所以看起來長表格與寬表格都可以輕鬆完成折線圖。
2. 歷年來臺旅客按居住地分 Visitor Arrivals by Residence
居住地是國家,維度高達100多個,在寬表格的例子中就可以看到100多個維度,根本無法有效進行資料視覺化;然而在長表格中,就能輕鬆的完成資料視覺化!
五、結語
在Power BI中,長表格是非常重要的格式,有著長表格的Power BI有如打通任督二脈一般,什麼圖表都能做出來!雖然在維度比較少的時候,寬表格與長表格的差異不大,但還是建議大家從長表格來做資料視覺化。
網路上滿少資源在介紹長表格與寬表格的差別,我在剛開始學習資料視覺化時,遇上了很多坑,這就是其中一個!因此在這邊分享給大家,希望大家能夠避開這個坑!懂了觀念之後,接下來就是實戰了,下一篇文章將介紹常見的寬表格種類,以及如何使用Power BI、Python、R來進行處理。
寬表格轉換成長表格實戰Power BI & Python & R
我該去哪裡學習Power BI?
Power BI數據分析實戰-邏輯與資料視覺化 (Power BI 數據工坊所推出的課程)
這堂課將會是一堂融合商業思維、數據分析心法與 Power BI 實際操作的課程,將會帶大家用Open Data完成3個數據儀表板,目前已經上線了,若對課程有興趣歡迎一起加入學習!
Microsoft Power BI 引導式學習 (官方學習文件)
目前市面上比較少Power BI的教學,官方的教學算是入門級別完整的課程,缺點就是比較深澀不好懂,是以功能為導向的教學方式,而且沒有中文字幕阿,不過還是建議若是聽的懂英文,也可以去聽聽看,熟悉一下Power BI的操作方式。
Taiwan Power BI User Group (Facebook社團)
目前台灣也沒有相應的Facebook社團讓Power BI的使用者可以一起討論使用過程中問題,因此Dax建立了Taiwan Power BI User Group,歡迎大家一同加入,有任何關於Power BI的事情都可以在上面討論。