背景描述
在做数据处理的时候,尤其是复利累积的时候,有时候会有这样一宗场景,通过某种条件找到一列数据[X1,X2,X3...Xn],然后想要求y=X1X2X3...Xn,这个粗看时没有办法通过SQL实现的,因为SQL里面的分组汇总函数就那么几个sum,avg,max,min,count没有办法直接求一组数据连续相乘。
解决办法
后来一个数学功底很好的同事给出了一个办法,现在分享给大家,原理如下:
代码:
exp(sum(ln(growth_rate))
** 注:growth_rate是各期复利增长率。
反思
在数据处理的时候对数运算其实是很有用,目前发现的小用途进行一下总结。
1.缩小数据差异。
对数可以将一组差异化很大的数据缩小数据间,比如在柱状图数据展示的时候,有时候高低柱的差距太大(数十倍)会使得低柱小得不可见,这个时候如果用对数将数据log处理一下,在数据标注的时候再通过exp逆运算回来就能正确展示了。