日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Excel 数据整理工具 ——PowerQuery

發布時間:2023/12/31 windows 29 传统文化
生活随笔 收集整理的這篇文章主要介紹了 Excel 数据整理工具 ——PowerQuery 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是處理數據的小爽鴨~

之前的文章,我們講過項目部領導老葉為了方便分析,需要將如下圖的左表轉化處理成右表。

前面我們介紹過 Word 替換法,還有 Textsplit 函數的方法。詳情戳文末鏈接。

不過,相信很多小伙伴都知道,PowerQuery 也是 Excel 專門用做數據清洗的利器。

所以,今天小爽就來帶大家來看看這個案例的 PQ 解法。

適用版本:Excel2016 以上(WPS 不適用)

難度系數:???

戳戳手:該案例屬于 PQ 中等難度,需要使用到一些 M 函數,大家重在學習思路。

我們先將數據導入到 PQ 編輯器中。

選中數據區域,在【數據】選項卡下,單擊【來自表格 / 區域】,【確定】。

1、拆分到行

如果只有一列需要拆分,那好辦。

我們直接用拆分列,拆分到行。

如下圖:

單列就拆分好了。

但是,我們需要拆分到行的有兩列。怎么辦?

那,分別拆分,然后將所需列合并?

分別拆開。

然后再合并。

可以是可以,但是如果待拆分的列有多列,還要一個個拆分,然后拼接轉表,這顯然并不是個好的選擇。

2、合并列

接下來,我們來看看另外的做法。

具體思路:

利用 Table.CombineColumns 將需要處理的列合并;

合并后的每一行,進行循環 (List.Transform) 拆分逗號 Text.Split;

處理后再轉表處理 (Table.FromColumns);

最后展開表 (Table.ExpandTableColumn)。

看不懂,沒關系,下面有詳細步驟 ↓

具體步驟:

單擊 fx 新建步驟。

? 獲取待拆分的列名的列表 name

= List.Skip (Table.ColumnNames 源))

Table.ColumnNames (源),是用來獲取表格標題的函數。也就是 {"姓名","參與完結項目","業績評分"}。

List.Skip 表示跳過幾個,第二參數不寫默認為 1,所以跳過 1 個,也就是 {"參與完結項目","業績評分"}。

這樣的好處是,后面新增列,也能夠獲取最新待拆分的列名形成的 list。

將步驟命名為 name。

? 合并待拆的列

單擊 fx 新建步驟。

公式欄中輸入:

= Table.CombineColumns 源,name,each _,"a")

=Table.CombineColumns (表,需要合并的列名形成的列表,合并的方式,新列名)

案例中我們需要合并的列名,也就是第一步的 name。

= Table.CombineColumns 
源,//表 name, //需要合并的列名形成的 list
each _, //合并的處理,先不做處理
 "a" //合并后的列名稱

? 循環合并處理,將文本按照逗號拆分

修改 Table.CombineColumns 第三參數合并處理

= Table.CombineColumns 
源,
name,
each List.Transform (_,(x)=Text.Split (x,",")),
"a")

如下圖所示。

這里主要是針對合并處理 的每一行,循環進行拆分。

List.Transform (
_,   //合并列每一行形成的 list。
(x)=Text.Split (x,",") //將每個數據按照逗號進行拆分
)

? 拆分后的數據,按照列進行轉表

將 Table.CombineColumns 第三參數拆分后的列表按照列轉表。

= Table.CombineColumns 
源,name,
each
   Table.FromColumns 
        List.Transform (_,(x)=Text.Split (x,",")), 
            name),
"a")

將拆分后的 lists,使用 Table.FromColumns 轉換成表。

=Table.FromColums (lists, 對應標題)

按列轉表后對應的標題,就是 name。

這一步命名為合并。

? 展開表格

最后一步,把表擴展開就可以。

單擊展開按鈕,取消勾選【使用原始列名作為前綴】,單擊【確定】按鈕。

直接展開,參數是寫死的。展開的列名其實也就是 name。

所以,我們將公式改成如下圖所示。這一步可以命名為結果。

= Table.ExpandTableColumn 
(
合并
,
"a",name)

最終的 M 函數:

let
    源 = Excel.CurrentWorkbook (){[Name="表 1"]}[Content],
        name = List.Skip (Table.ColumnNames (源)), 
           合并 = Table.CombineColumns ( 
                           源,
                                       name,                                                            
                                       each                                          
                                           Table.FromColumns (
                                                    List.Transform (_,(x)=>Text.Split (x,",")),                                                                                             name), 
           "a"),               
            結果 = Table.ExpandTableColumn (合并, "a",name)
 in
    結果

3、最后的話

本文講解的是 PQ 解法,該方法涉及多個函數。

STEP01 獲取待拆分的列名的列表

? Table.ColumnNames 可以獲取表格的標題

? List.Skip 可以跳過指定個數

= List.Skip (Table.ColumnNames(源)

STEP02 合并指定列,先不做處理

Table.CombineColumns (表,name,each _,新列名)

▋STEP03 Table.CombineColumns 的第三參數處理

? 循環拆分

List.Transform+Text.Split

? 按列轉表

Table.FromColumns

▋STEP04 利用 Table.EnpandTableColumn 展開合并的列

第二參數拆分的列名,不要寫死。

關于該案例的其他做法,請戳:文章。

將數據表轉化后,老葉就可以通過數據透視表進行進一步的分析啦。

如下圖:

比如上個季度,每個項目成員參與的項目數,總分是多少;每個項目有多少人參加,參與成員有誰。

也可以對數據進行可視化。

從整個案例中,我們可以看到整個數據的過程。

數據錄入-數據清洗-數據分析-數據可視化-[數據匯報]

不同過程,所需要掌握的 Excel 知識點有所不同。

? 數據錄入

數據驗證 / 單元格格式/...

? 數據清洗

函數 / VBA / PowerQuery

? 數據分析

函數 / 數據透視表 / PowerPivot

? 數據可視化

圖表 / 表格美化等

本文來自微信公眾號:秋葉 Excel (ID:excel100),作者:小爽

廣告聲明:文內含有的對外跳轉鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節省甄選時間,結果僅供參考,所有文章均包含本聲明。

總結

以上是生活随笔為你收集整理的Excel 数据整理工具 ——PowerQuery的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。