Covid-19数据分析
各国历史数据分析
数据加载
- 加载Covid19.All.csv
- 设置表名:his-all
修改其它列名、调整顺序,添加累计死亡、月份(Date.ToText([date], "yyyy-MM"))列
let 源 = Csv.Document(File.Contents("Covid19.All.csv"),[Delimiter=",", Columns=11, Encoding=65001, QuoteStyle=QuoteStyle.None]), 提升的标题 = Table.PromoteHeaders(源, [PromoteAllScalars=true]), 更改的类型 = Table.TransformColumnTypes(提升的标题,{ {"date", type date}, {"country", type text}, {"countryCode", type text}, {"province", type text}, {"provinceCode", type text}, {"city", type text}, {"cityCode", type text}, {"confirmed", Int64.Type}, {"suspected", Int64.Type}, {"cured", Int64.Type}, {"dead", Int64.Type} }), 插入的月份 = Table.AddColumn(更改的类型, "月份", each Date.ToText([date], "yyyy-MM"), type text), 重排序的列 = Table.ReorderColumns(插入的月份,{"date", "月份", "country", "countryCode", "province", "provinceCode", "city", "cityCode", "confirmed", "suspected", "cured", "dead"}), 重命名的列 = Table.RenameColumns(重排序的列,{ {"date", "日期"}, {"country", "国家"}, {"countryCode", "国家代码"}, {"province", "省"}, {"provinceCode", "省代码"}, {"city", "市"}, {"cityCode", "市代码"}, {"confirmed", "累计确诊"}, {"suspected", "累计疑似"}, {"cured", "累计治愈"}, {"dead", "累计死亡"} }), 已添加自定义 = Table.AddColumn(重命名的列, "现有确诊", each [累计确诊]-[累计治愈]-[累计死亡], Int64.Type) in 已添加自定义
- 引用his-all,命名为his-country
- 过滤省为空的行
删除省市相关列
let 源 = #"his-all", 筛选的行 = Table.SelectRows(源, each [省] = ""), 删除的列 = Table.RemoveColumns(筛选的行,{"省", "省代码", "市", "市代码"}) in 删除的列
- 引用his-country,命名为day-country
- 筛选最近一日的数据
let 源 = #"his-country", 筛选的行 = Table.SelectRows(源, each [日期] = List.Max(#"his-all"[日期])) in 筛选的行
模型设计
- 打开数据页
- 选择his-country,添加一列新增数 = 当天累计确诊 - 上日累计确诊(负数归0)
新增数 = var this_value = [累计确诊] var this_code = [国家代码] var last_value = CALCULATE(SELECTEDVALUE ( 'his-country'[累计确诊], 0 ), ALL('his-country'), PREVIOUSDAY('his-country'[日期]),'his-country'[国家代码] = this_code) return if(this_value > last_value, this_value - last_value, 0)
- 选择his-country,添加一列死亡数 = 当天累计死亡 - 上日累计死亡(负数归0)
死亡数 = var this_value = [累计死亡] var this_code = [国家代码] var last_value = CALCULATE(SELECTEDVALUE ( 'his-country'[累计死亡], 0 ), ALL('his-country'), PREVIOUSDAY('his-country'[日期]),'his-country'[国家代码] = this_code) return if(this_value > last_value, this_value - last_value, 0)
新增数按月丝带图
- 在报表页添加功能区图表,设置轴 - his-country[月份],图例 - his-country[国家],值 - his-country[新增数]
- 数据太多的话,可筛选月份和国家
死亡数按月丝带图
- 在报表页添加功能区图表,设置轴 - his-country[月份],图例 - his-country[国家],值 - his-country[死亡数]
- 在分析面板添加趋势线和预测,扩大预测长度
全球累计确诊趋势
- 在报表页添加折线图,设置轴 - his-country[日期],值 - his-country[累计确诊]
各国曲线手机版面
- 新增报表页,设置页面宽度为600,高度3000
- 添加卡片图,设置字段 - day-country[累计确诊],筛选单选美国,设置函数标题
- 添加折线图,设置轴 - 日期,图例 - 国家,值 - 新增数,筛选美国
- 复制2~3步,添加巴西、印度、俄罗斯、南非、墨西哥等多个国家
中国各省市累计数据分析
数据加载
- 打开数据转换
- 引用his-all,命名为day-all
- 刷选最近一天的数据
let 源 = #"his-all", 筛选的行 = Table.SelectRows(源, each [日期] = List.Max(#"his-all"[日期])), 更改的类型 = Table.TransformColumnTypes(筛选的行,{ {"市代码", type text} }) in 更改的类型
- 引用day-all,命名为day-province,保存中国各省数据
- 筛选国家代码 = CN、省代码不为空,市为空
let 源 = #"day-all", 筛选的行 = Table.SelectRows(源, each [国家代码] = "CN"), 筛选的行1 = Table.SelectRows(筛选的行, each [省代码] <> ""), 筛选的行2 = Table.SelectRows(筛选的行1, each [市] = ""), 删除的列 = Table.RemoveColumns(筛选的行2,{"市", "市代码"}) in 删除的列
- 引用day-all,命名为day-city,保存湖北各市数据
- 筛选国家代码 = CN、市代码不为空、省 = "湖北省
- 删除累计疑似、现有确诊、累计确诊等列
- 删除监狱系统、境外输入等行
- 选择累计治愈和累计死亡,执行转换 - 逆透视列
let 源 = #"day-all", 筛选的行 = Table.SelectRows(源, each [国家代码] = "CN"), 筛选的行1 = Table.SelectRows(筛选的行, each ([市代码] <> "") and ([省] = "湖北省")), 删除的列 = Table.RemoveColumns(筛选的行1,{"累计疑似", "现有确诊"}), 筛选的行2 = Table.SelectRows(删除的列, each [市] <> "监狱系统"), 筛选的行3 = Table.SelectRows(筛选的行2, each [市] <> "境外输入"), 删除的列1 = Table.RemoveColumns(筛选的行3,{"累计确诊"}), 逆透视的列 = Table.UnpivotOtherColumns(删除的列1, {"日期", "月份", "国家", "国家代码", "省", "省代码", "市", "市代码"}, "属性", "值") in 逆透视的列
模型设计
- 打开数据页,选择day-province
- 新建排名列:
排名 = RANKX ( 'day-province', 'day-province'[累计确诊], 'day-province'[累计确诊] ,ASC)
各省累计确诊着色地图
- 新建报表页,添加着色地图,设置位置 - day-province[省],工具提示 - day-province[累计确诊]
- 设置格式 - 数据颜色,根据排名列设置色阶
- 筛选省,不要选香港和澳门,地图位置有问题
湖北各市治愈和死亡数据气泡地图
- 新建报表页,添加气泡地图,设置位置 - day-city[市],图例 - day-city[属性],图例 - day-city[值]
全球各大洲、各国详情数据分析(08-20)
数据加载
- 获取数据 - Excel(网页中如果有表格,可以作为Excel处理)
- 选择COVID-19 Virus Pandemic - Worldometer.html(如果可访问外网,可直接加载Web链接)
- 选择表 1
- 修改表名:当前详情表
- 过滤索引列空行
- 过滤总确诊小于10000的国家:
= Table.SelectRows(筛选的行, each [TotalCases] > 10000)
- 关闭并应用数据
各大洲占比和排名分析
- 新建度量:
累计确诊 = SUM('当前详情表'[TotalCases])
- 添加树状图,设置组 - 大洲,详细信息 - 国家,值 - 累计确诊
- 添加条形图,设置轴 - 大洲,值 - 累计确诊
- 添加饼图,设置图例 - 大洲,值 - 累计确诊
- 调整色彩、排版
- 可将累计确诊改为死亡,康复,检测等数据进行类似分析
确诊、死亡人口比例分析
- 添加柱状图,设置轴 - 国家,图例 - 国家,值 - Tot Cases/1M pop
- 添加柱状图,设置轴 - 国家,图例 - 国家,值 - Deaths/1M pop
- 通过筛选器限制数据条数
1.添加散点图,设置图例 - 大洲,X轴 - Tot Cases/1M pop 平均值,Y轴 - Deaths/1M pop 平均值,大小 - Population