谢谢老师,讲的很明白!
老师,请教下,总增量是负数时,怎么计算各部分的增量贡献占比?
下面先说一个总增量为正的例子
import pandas as pd
import numpy as np
data1=pd.DataFrame({"aa2019":[7,9,10,6],"aa2020":[8,15,7,3]},index=["part1","part2","part3","part4"])
data1["增长量"]=data1["aa2020"]-data1["aa2019"]
data1["变化总额"]=data1["增长量"].sum()
#计算对于增长的贡献率
data1["贡献率"]=data1["增长量"]/data1["变化总额"]
如果总增量是负的,计算贡献率的时候可以是各个部分的增长量除以变化总额的绝对值
import pandas as pd
import numpy as np
data1=pd.DataFrame({"aa2019":[7,9,10,6],"aa2020":[8,12,5,3]},index=["part1","part2","part3","part4"])
data1["增长量"]=data1["aa2020"]-data1["aa2019"]
data1["变化总额"]=data1["增长量"].sum()
data1["变化总额绝对值"]=data1["变化总额"].map(lambda x:abs(x))
#计算对于增长的贡献率
data1["贡献率"]=data1["增长量"]/data1["变化总额绝对值"]
可以看到我们贡献率总额是负的,因为我们的结果是负增长的,这个时候不是讨论谁有功了,而是看谁的过最大