利用PowerBI分析疫情數據

  • 2020 年 2 月 21 日
  • 筆記

「大疫」當前,大家每天醒來第一件事就是打開手機,看看本地又新增幾個確診,老家又新增多少疑似,親朋好友那邊又有哪些傳言……與其在家閑出P,為何不藉助平台數據,用PowerBI來小試一把牛刀呢。

01 數據來源

數據源自「丁香園」,已有人整理好,只需在Github上下載(如果無法訪問該網址,請科學上網)下載地址:

https://github.com/BlankerL/DXY-COVID-19-Data/blob/master/csv/DXYArea.csv

02 數據導入

導入之前,先用excel把文件打開,看看都有哪些字段,涵蓋了哪些省市

粗看之下還算清晰,最後一列「更新時間」有點問題。沒關係,直接在EXCEL里把單元格式改成日期型即可

打開PBI,導入數據。下載文件是CSV,導入時注意別選EXCEL數據源

03 數據清洗

數據導入後,字段名改不改中文看各人習慣。就以我自己所在地江蘇常州為例(畢竟自己城市每天的數據要相對熟一點),先把城市篩選出來。

04 重點來了!!!有兩個難點:

1)從更新時間上看,丁香園會每天刷新多次數據。如何取得每天最後一條數據?

2)每條數據記錄的不是新增人數,而是匯總人數。如何得到每天增量數據,而不是總量?

根據「更新時間」新建「更新日期」列,把年月日單獨列出來。

新建表: 「精簡時間表」=

SUMMARIZE('DXYArea',

DXYArea[省],DXYArea[市],DXYArea[更新日期],

"總死亡",MAX(DXYArea[市死亡]),

"總治癒",MAX(DXYArea[市治癒]),

"總疑似",MAX(DXYArea[市疑似]),

"總確診",MAX(DXYArea[市確診]),

"更新時間",MAX(DXYArea[更新時間])

)

SUMMARIZE函數可以對錶進行分組(「SUMMARIZECOLUMNS」函數也有同樣功效)。對於上表中「省」「市」這樣重複值較多的列可以直接合併,而對於數據列值,則通過MAX函數取最大值。若前後兩次數據無變化,則根據MAX(「更新時間」)來取最後一次更新時間。

好,第一個問題解決,我們已得到了每天最後一條數據。

05 問題2

第二個問題,如何通過每天發佈的匯總數,得到每日增量?

如果想在原表本身通過新建列來實現,公式的複雜程度一定小不了。那是不是可以跳出表框架,直接用度量值來實現呢?

總確診 = SUM('精簡時間表'[總確診])

總確診_昨日 = CALCULATE( [總確診], DATEADD('精簡時間表'[更新日期],-1,DAY))

今日確診 = [總確診]-[總確診_昨日]

昨天確診 = CALCULATE( [今日確診], DATEADD('精簡時間表'[更新日期],-1,DAY))

基礎度量值有了,其他諸如疑似、治癒、現存確診,周累計、月累計、環比同比等這些度量值,就自由發揮吧!

省內兄弟城市對比,外省同級城市對比也可以搞起來,尤其是江蘇弟兄們,繼續發揚散裝內鬥精神,保持風格

本文作者:東軍