iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
1
AI & Data

門外漢通識:資料科學無痛入門磚系列 第 9

Power Query 實務應用 #筆記三

  • 分享至 

  • xImage
  •  

Power Query 還有兩個重要的工具:「合併查詢(關連資料庫的整併)」及「附加查詢(併兩個檔案)」。

附加查詢的方式,可在右欄「活頁簿查詢」點選我們想要的活頁簿,在最上層索引標籤「查詢」➫ 「編輯」,進入查詢編輯器,在 Tool Bar 點選「新來源」➫ 選我們的資料所屬的型態(如 CSV / Excel)➫ 找到我們的資料,假設我們想要選分別來自台北及台中的房屋交易資料,最後整理成一個連續的檔案,那就沿用相同步驟把台北和台中的兩份資料檔案都匯入,它們會出現在左欄的查詢當中供我們選取,打開台北的檔案後,接著在 Tool Bar 點選「附加查詢」,就能讓我們拉選單選取台中的資料,如此一來,台中的資料就會附加在台北的資料裡了,從儲存格篩選可以很快地證實。另一個附加的方式,是回到前台,在右欄「活頁簿查詢」點選我們想要的活頁簿,按右鍵出現「附加」的選項,那就按下它啦~

合併查詢的部分,則在最上方索引標籤「首頁」➫ 「新來源」➫ 「檔案」➫ Excel,選取我們要的檔案,比方說一個包含產品和訂單詳細資料兩個資料表的檔案,匯入時直接勾選我們要的資料表 ➫ 確定,它們同樣會出現在左欄的查詢當中供我們選取,假設打開訂單詳細資料後看到許多代碼、數字,沒有文字資料供分類與識別,想把產品資料表的類別和名稱帶進訂單詳細資料,看出數字所呈現的是出自於哪些產品,這時在 Tool Bar 點選「合併查詢」,打開第二個方塊指名要跟產品合併,接下來去相連我們要的各自兩個共同欄位,確認後會看到原本的訂單詳細資料最右邊出現了「NewColumn」,按下最右側箭頭展開我們想要的欄位內容即可,之後可以直接分析,不用額外去建立關聯。

Power Query 可以讓我們收集程式碼,但不需要去判別或學習程式碼的定義或邏輯。之後還想做其他類型的資料正規化,一樣在最上方索引標籤「首頁」➫「新來源」➫「檔案」➫ Excel,選取我們要的檔案,假設資料表裡的「訂購產品」都被呈現為 P1[200][1200], P5[100][500]... 建資料的人是知道 P1 = 產品,200 = 單價,1200 = 數量,但外行人是完全看不懂的!何況一個儲存格裡可能同時還有三筆這種資料,正確做法是要分割成三個 Columns 來做的,否則無法分析。第一步驟是點選該資料行,從逗號「,」開始分割,選 Tool Bar 的「分割資料行」➫「依分隔符號」➫ 點選逗號 ➫ 確定,就會幫我們分割出不同產品出來;接著要處理結構的正規化,全選所有剛剛切割出來的資料行,點選最上方索引標籤「轉換」➫「取消資料行樞紐」,再把不要的、多餘的資料行移除(點資料行後,「首頁」➫「移除資料行」),這樣我們只剩一個 Column、每個儲存格裡都僅存放一筆產品資料了。接著,要分割 P1[200][1200] 這樣的資料結構成三欄,以這個例子我們用左括號「 [ 」來做分割,選 Tool Bar 的「分割資料行」➫「依分隔符號」➫ 點選自訂 ➫ [ ➫ 確定,這樣遇到左括號就會自動切一刀、幫我們分成三欄 P1 - 200] - 1200],不過右側兩欄的右括號要先拿掉才能變成數值,點選最上方索引標籤「轉換」➫「取代值」,要尋找的值 key「 ] 」,取代為的值就什麼都不要打、保持空白 ➫ 確定,這樣右括號就不見了。接著,把這兩欄轉成數值,選取兩行後在同樣的索引標籤下選「資料類型」,從文字調整成整數,就完成正規化了。再來就是修改資料行的標題(第一個 Row),比如 P1 那行輸入「產品名稱」、200 那行輸入「單價」等。

結構正規化又是什麼呢?再次在最上方索引標籤「首頁」➫「新來源」➫「檔案」➫ Excel,選取我們要的非正規化結構檔案,譬如發現有些資料行是資料庫的格式、有些資料行不是,比方說是八個分散的城市區域以及相關金額,這時應該要獨立出來「銷售地區」與「金額」欄位,而不是把地區展開來。此時,我們按 Shift 全選所有城市區域的資料行,點選最上方索引標籤「轉換」➫「取消資料行樞紐」,完成資料結構的正規化,接下來修正資料行名稱為「銷售地區」與「金額」。

Power Query 還有個可以拆分日期欄位的強大功能,能新增年度、季、月份、年中的週、月中的週、星期資料行,來符合我們的需求。譬如想把銷售日期 2020/09/24 做年度、季節、月份,點選該資料行,點選最上方索引標籤「新增資料行」➫「日期」,選年 - 年 就會拆出 2020,年 - 年初 拆出 2020/01/01,並自動新增到最右邊的 Column;而選季 - 年中的季度就能切出第幾週,季初就看是哪個季,秋季(7-9 月)季初就是 07/01、季末是 09/30,週裡的年中的週 - 1-52 週當年第幾週、月中的週 - 1-4 週,還能算是開始(週日)還是結束(週六)... 等,非常簡單且有效率!


上一篇
Power Query 實務應用 #筆記二
下一篇
Power Map 實務應用 #筆記一
系列文
門外漢通識:資料科學無痛入門磚30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言