2017/5/1

富裕日本? 年收入所得未滿350萬佔去四成 (2) 使用 Tableau 作圖

如果還在評估是否導入 Tableau 的商業用戶或學校,可以先下載 Tableau Public 進行試用,相較於正式版可以匯入多重資料格式、資料庫,至少可匯入 CSV / EXCEL 進行視覺化的練習;

相較於昨天使用 PowerBI 進行雙軸繪圖,使用 Tableau 可以非常直覺快速完成。基本上的步驟如下:

 

 

 

然後到 比例、累積比例所在的維度中的右鍵選單中選取 「Dual Axis」即可,就可以將2個維度分別放在不同的Y軸上;如果要調整順序,只需要用滑鼠游標進行拖放即可完成

 

結果如下

 

 

有時候我們可以用不同的工具達到相同的結果。其實我們可以發現無論是 PowerBI 或是 Tableau 都有提供雙 Y 軸的功能。但無論如何預設的視覺化工具,還是會充滿許多限制。而在 R 中的 ggplot2 因為有圖層的概念,所以即使在同一張圖中,只要你願意,你可以把相同的資料用N種的視覺化方式合併疊加呈現。只是有時候,我們要反過來問,是不是會複雜的圖表真能提供給我們更多的資訊。在我們對於問題還沒有清楚掌握的狀況下,我建議先將視覺化作為探索性分析的工具,儘量使用 PowerBI 或是 Tableau 預設的圖表去加速問題發現流程。因為這2套軟體都可以很快速地讓圖表進行互動,等到我們確定問題後,進行更進一步的統計模型探討後,我們再考慮使用終極兵器 R 的 視覺化工具 ggplot2 .

 

我認為這才是真正實務上應用的手法,您認為呢?

2017/4/30

富裕日本? 年收入所得未滿350萬佔去四成

 

去聽了 RR 的演講,有提到日本這幾年面對的一些困境。例如這個例子:接近4成的人年收入是在300萬日圓以下。更不用去提日本目前在職場上對於女性的歧視,附帶一提在資料中也可以找到生完小孩子後復歸職場的比例,不過暫時不做這些進階的分析。

 

查了一下網路資料,平成27年是西元 2015年。這類的統計資料不太可能做到即時更新。

有興趣的人,可以到這裡下載 EXCEL 資料表:

http://www.mhlw.go.jp/toukei/saikin/hw/k-tyosa/k-tyosa14/

(附帶一提:其實台灣的 OPENDATA 算是做的不錯了)

 

總之先將重點放在總體的狀況吧,因為原始資料用了很多合併儲存格,而一般的軟體是無法判斷這些東西。我們依照 TIDY DATA 的理念,將資料整理如下:

 

 

然後放到 POWERBI 做圖,觀察其中幾個有趣的事項:

(1) X 軸其實為了方便閱讀,所以其實是文字格式;文字格式一般比起數字要進行排序,得要經過一些處理手法,但是遇到「50萬未滿」、「1000萬以上」很容易讓軟體判斷錯誤;最簡單的方式,直接用「累積比例」做為排序的參考值

(2) 要將2個比例畫在同一張圖表中,為了視覺上的清楚,一般建議使用2個 Y 軸進行顯示。所以要到 POWERBI 的「FORMAT」中將第2個Y軸給打開。

(3) 一般而言,折線圖適合運用在時間序列等狀況中,但因為這次分析的X軸經過我們處理後,愈往右邊的是高收入家庭,所以使用折線圖並沒有違反題意

(4) 下次有時間再來把這張圖與男女就業比例等圖表做成互動圖表,應該會很有趣

(5) 日本把50萬日幣做為資料區間(BIN),其實算是區隔的很細致了。台灣似乎目前沒有給到這麼細的資料?

 

2017/4/29

從 EXCEL 匯入 UTF8 CSV 變成亂碼? 使用 EXCEL 或 POWERBI 如何處理?

實務上,我們常常會轉存文字檔的編碼為 UTF8,因為這會有利於我們跨平台交換資料的便利性。再者有些企業經營的是國際市場,所以會有需要儲存日文、韓文、越南、泰文、各式歐洲語系的需求,如果只使用過往的台灣中文編碼 BIG5碼會有很多問題。

而很多人會為工作方便,常常會將 CSV 的檔案關聯直接設定為 EXCEL ,好處是直接在檔案總管點2下,檔案就直接會顯示在 EXCEL 上。但是如果你試著對於 UTF8 進行這樣的作業,你會發現如下的結果:「亂碼!!!!」

而且除了亂碼之外,其實你會發現有時候連資料筆數、資料欄位都整個錯亂;例如:你原先有50筆資料,但變成了48筆或是53筆資料。這可不是非同小可的錯誤啊,即使你只是想要求算總體營業額,也許不用知道細項的名目,但事已至此,你不動手處理這個問題也是不行。

 

圖示:直接點擊 UTF8 後的EXCEL 畫面

 

這時候就要借用 EXCEL 的「資料」→ 「從文字/CSV」功能;此功能會出現讓你選擇檔案編碼的選單:操作範例如下。這個功能在舊版的 EXCEL 中也有具備,可見 EXCEL 早就具備處理多國編碼的能力,但為什麼要藏在這麼隱密的地方呢? 這我就不知道啦。

而在新版的 EXCEL 2016中,其實整個介面都與 POWER QUERY 完全整併。所以你會發現後續看到的畫面與 POWERBI 中讀入 CSV 完全相同。

 

 

出現編碼選擇的畫面。原來系統一開始判讀編碼錯誤,誤認為這個編碼是 BIG5

 

將其選擇成正確的編碼型式(UTF8);附註一提,如果你需要處理日文編碼的話,一樣比照辦理,找到適合的日文編碼就可以正確讀檔。

OK,這下就完全正常。

資料正確匯入後,就可以進行下一步的分析。

 

這邊我直接筆述比較同樣讀入CSV在 EXCEL2016、POWREBI 的作業程序:

「資料」→「從文字/CSV」→「選擇編碼」 (POWER QUERY)

「GET DATA」→ 「TEXT/CSV」→「選擇編碼」

就可以發現2者的程序是非常近似的,只是一般使用者不易察覺到 EXCEL 的這項功能,導致常常有人問到為什麼在 EXCEL 中是亂碼。

 

而在實務或是教學中,我個人是偏好直接用 POWERBI 或是 Tableau 直接來進行檔案的匯入。大部份的情況下,這2套軟體都能直接對應到實際的編碼,有時連選單都不用再進行處理。

2017/4/28

Excel 與 PowerBI 協作的第一步

常有人問 Excel 匯入到 PowerBI 有什麼技巧?

會這樣問的人,可能是發現在實務中,因為大家工作繁忙,所以常常將 Excel 的用途給無限提升。有人直接用 Excel 當做週報格式、有人用來繪製課表、有人用來編寫個人收支計劃。是故常常有許多 Excel 的資料其實是不適合/無法匯入 PowerBI。

 

在此我們舉一個最簡單的範例,假如我們有以下的資料。在匯入 PowerBI 前我們先將其轉換為 Table 格式。如果能順利轉換成 Table 的格式,保證 100%可以匯入 PowerBI

 

 

將資料全選後( Ctrl + A) 在 Excel 的插入 → 表格 (Table)

轉變成如下表,藍白相間的格式。至此,打完收工。

 

 

轉換為 Table 格式後的資料有什麼特點呢? 或者需要什麼樣的前提?

( ROW : → , Column: ↓,因為行列的表示法,台灣與中國日本剛好翻譯相反,故我通常不用以避免 GOOGLE 資料時搞得自己混亂異常)

  1. 一組 ROW 就是一筆資料(例如:編號1的這一位,他就是畢業於土木系,年齡是23歲)
  2. 一組 Column 就是相同屬性的資料(例如:年齡這個欄位放的都是數字)
  3. Table 中間不能夾藏一組空白的資料(例如:原始資料中,你如果把第5筆資料給完整刪掉,將轉換成 Table時只會有前面4筆資料)
  4. 一定要有欄位名稱(例:「年齡」這個位於C1 欄位變數名稱一定要有,因為這關於後續匯入 PowerBI 的作業
  5. 儲存格可以有空白(例:如果編號14尚未提供年齡資訊,該儲存格為空白是可以接受的)
  6. 千萬不可以在要轉成 Table 的資料中有合併儲存格!!!

 

其實 Table 的概念是從資料庫中借過來的,如果有使用過資料庫軟體的經驗,就會發現 Table 非常類似資料庫中的資料表(Table);此處台灣微軟將其翻譯為表格(Table)可能是為了讓使用者不感到害怕,但缺點就是其實很多進階的使用者會將其與一般的表格給搞混。

再者最近在 R 中揭起了 Tidy Data 的風潮,而 Excel 中的 Table 基本上也符合 Tidy Data 的要求;Tidy Data 指的是什麼呢?

 

  1. Each variable forms a column.
  2. Each observation forms a row.
  3. Each type of observational unit forms a table.

有沒有與 Excel Table 的要求很接近呢?

 

當你在 Excel 後設定好 Table 後,其實對於你資料分析相關的作業都會變得非常方便。例如:排序、製作樞紐分析圖表…等等。

2017/4/27

資料視覺化的工具的選擇

在學習資料視覺化的過程中,有很多工具可以供我們做選擇,以下這篇文章 ( What I Learned Recreating One Chart Using 24 Tools) 提供了作者詳細比較各種軟體、程式語言的優勢與劣勢。

 

圖形引用來源:

What I Learned Recreating One Chart Using 24 Tools

https://source.opennews.org/articles/what-i-learned-recreating-one-chart-using-24-tools/

 

作者用了2個維度 學習成本、繪圖彈性來做各式軟體的分類。舉例來說,我們都知道 D3 非常的強大,但是的確難以學習,對於初學者若不具備撰寫前端的經驗,可能在開發環境的設定就是第一道關卡,然後還有對於基本的 JS 語言有一定的認識;而眾所皆知,應該是世界上最多人使用的視覺化工具 EXCEL,則非常易學,但是可以做到客製化的項目就不多。如果對於 EXCEL 圖形有過較深入研究的人就知道,EXCEL 要做到很多圖形,需要使用非常奇淫巧技的技術,諸如在一般程式語言可以一行指令就得到的「直方圖」,在EXCEL 2017前的版本,一樣能繪製出來,只是要經過很多道程序 …

我個人其實蠻建議資料視覺化的初學者,可以去下載 Tableau Public 來學習資料視覺化。因為 Tableau 應該是我看過在使用介面上,最具備直覺化的軟體。當然這與 Tableau 面世時的時間點也有關係,Tableau 因為是新的軟體,所以很多開發理念都針對近期的資料需求進行簡化。當然這些資料化軟體基本上,都不具備太深入的統計分析功能,要在 Tableau 進行諸如 SVM、進階的 Text Mining 都不是件簡單的事。但就算是在 R 這類專門的統計軟體中,視覺化也應該被視為是一種獨立的作業程序。

 

而在這其中,怎麼沒有見到 PowerBI 呢? 我想這是因為 PowerBI 一開始的野心太大,但操作介面真的不是那麼直覺,所以 PowerBI 的潛力被作者給忽略。

其實 PowerBI 的彈性非常強大,如果你只是個一般的使用者,在經過一定時間的練習後,我相信可以在此2維平面得到接近 Tableau 的結果。而因為 PowerBI 提供與 R 介接的方式,所以當你對於 R 有一定的瞭解,只要能夠瞭解資料流程中的限制,你就有機會往下一步移動。而如果你想要自訂自己的資料視覺化效果,還可以利用 D3 的語法(或是 R)來開發,將你個人的開發成果拓展至整個公司。

 

 

當然,我認為學習任何東西都要考慮效率。而效率的計算,不外乎是投入與投出之間的取捨。今天如果身處在一個中小企業或是新創體系,我認為將 PowerBI 妥善與 R 進行整合就能解掉近乎 95%的問題;而如果公司是國際級的大公司,努力開放了一個月的視覺化套件,可以供應給各地的子公司,那也是美事一件。

 

結論,我個人較建議的視覺化工具(排名不分先後):

(1)R + ggplot2

(2)Excel

(3)Tableau

(4)PowerBI Desktop

(5)R + Plotly

這系列的文章將先以 PowerBI 做個簡單的介紹,後續有機會再為大家介紹其他的好用的視覺化工具

2017/4/26

PowerBI 各種版本的差異?

發現有蠻多人不太了解版本之間的差異,如果直接上官網的話,初學者大概也搞不懂主要的差異在何處。在此簡單的說明一下。

PowerBI 的家族:

(1)PowreBI Service(SASS)

微軟提供的網路服務,讓你可以隨時存取你製作好的報表,不再受限於單機。但此服務需要以公司、組織、學校、法人的 email 進行註冊,一般的免費信箱像是 Gmail、msn、yahoo Email 是無法註冊的;而此服務還分成:

A - 免費使用

B - 付費使用

主要差別在於付費使用,可以擁有更多公司團隊合作上的優勢,而在更新的頻率上也較實際需求,當然能夠儲存的空間一定更高;然而我們在學習的過程中,建議還是先將以下介紹的單機版給熟練後,再考慮工作流程是否適合導入 PowerBI Service

以下是由微軟官網所捉取的資料:

(2) Windows Software(單機使用)

   A – Excel : PowerQuery + PowerPivot + PowerView

若公司內大量使用Excel進行報表開發,但現實又不允許直接導入 PowerBI ,可以優先考慮此項解決方案。

   B – PowerBI Desktop: (建議優先學習此版本)無需安裝 Excel ,就可以得到上述所有功能,而且與 PowerBI Service 的整合更強。

在技術上,微軟已經將 PowerView 所繪製的圖形以最新的網頁技術進行處理。使用者無需去學習複雜的 D3.js ,在 PowerBI Desktop 進行相關的報表編製後,一鍵上傳到 PowerBI Service 就可以得到預期的結果。

其實在微軟所規劃的策略藍圖中,PowerBI 還能與 SQL Server 做更密切的互動。但考量到許多的中小企業的資料庫主要仍以 MySQL、Postgresql 為主,故本網誌將不會對此著墨太多。

2017/4/25

PowerBI 的基本作業流程

由於 PowerBI 是由Ecxcel BI 套件所衍生而後進行整合的軟體,所以初學者在第一次接觸 PowerBI 總會有不得其門而入的感覺。現在我將主要的流程整理如下:

PowerQuery 原先是在 Excel 中的外掛,主要負責的就是資料的匯入與初步的資料整理。例如:如果是單純的 HTML 表格,使用 PowerQuery 就可以直接進行捉取。若是複雜的 ajax 網頁,則使用者還是得透過其他程式語言進行處理,再將處理完後的資料整理後再匯入至 PowerBI中。又或者是各種各樣的資料庫系統(例:MySQL、Oracle、SQL Server…) 甚至就連 No SQL 都可以順利連接。當然最基本的文件檔(CSV)或是EXCEL檔都是沒有問題。

而在實際作業狀況中,我們常常不會只匯入一筆資料,我們可能同時匯入了客戶清單、客戶消費品項、歷年銷售紀錄等資料,所以我們還需要對資料進行更進一步的處理。在過去我們可以使用 EXCEL 的 vlookup 進行以上的處理,但常常會發現在資料筆數更大時,就會面臨效能低落的冏境… 而此時 PowerPivot 就可以解決這個問題。若是熟悉SQL開發工具使用者,一定會對於PowerBI 提供的工具相當熟悉,因為可以視覺化的進行 Join 等作業。而這就是 PowerPivot 主要的作用。

而在上述資料處理作業都完成後,就能順利進行資料視覺化的作業;這視覺化的本質,在過往的 Excel 套件名詞就叫做 Power View。

其實這是相當直覺的作業流程:首先我們取得資料,進行初步的整理,而在取得多筆資料後,我需要再將資料再整行一次整理,整理完後就可以畫圖。

先使用 GUI 的工具將上述的流程完整跑過一次,後續再要進階時,就可以研究 M 、R Script、DAX 這些程式語言針對上述的作業提供了更細緻的控制。例如 M 語言可以使用參數,如此一來讓使用者就可以輸入任意筆地址然後得到回傳的經緯度。(合理使用下,一般人很難超過 Google Geo API  的使用限制)