6. 人口预测
按照目前的国家人口及增长率,我们来展望下2020-2040年的世界人口数。(因为负增长及一些国家的增长率数据为0,所以数据可能不怎么正确。)我们主要是展示分析过程及技巧为主。
A. 添加各年度的人口数
要求2020-2040年的人口,公式为:上一年度人口*(1+增长率)。因为考虑的使用的是类似复利的方法来计算人口增长。 我们需要在源表格里面添加上2020-2040的维度数据。这里就存在一个批量循环添加列并计算人口公式的这样一个循环语句。我们看下如何写
List.Accumulate({2020..2040}, 更改的类型, (x,y)=>Table.AddColumn(x, Text.From(y), each ([人口数量]*Number.Power(1+[增长率],y-2019)) ) )
解释:List.Accumulate函数代表了以第2参数作为初始化,通过第3参数的函数结果再循环赋值到倒第2参数,最终显示的是第3参数的运算结果。
次数
第2参数
第3参数
更改的类型
添加2020为列名,并且列表达式为2019年人口数量(1+增长率%)^(2020-2019)次方=2019人口(1+增长率%)
已添加2020列的表
添加2021为列名,并且列表达式为2020年人口数量(1+增长率%)^(2021-2019)次方=2019人口(1+增长率%)^2
已添加2021列的表
添加2022为列名,并且列表达式为2021年人口数量(1+增长率%)^(2022-2019)次方=2019人口(1+增长率%)^3
已添加2039列的表
添加2040为列名,并且列表达式为2021年人口数量(1+增长率%)^(2022-2019)次方=2019人口(1+增长率%)^21
B. 通过逆透视转换成1维表
把新增加的列都逆透视成一维表,这一步也可以通过选中原来的表取做逆透视其他列,或者更为简洁的就是书写代码。
Table.UnpivotOtherColumns(添加年份列, Table.ColumnNames(更改的类型), "预测年份", "预测人口" )
解释:通过取原来表标题作为一个列表,逆透视其他列(也就是新增加的年份列),逆透视属性值列名为预