认识环比增长率很多公司比较注重业务的增长,经常需要计算同比增长率和环比增长率。自从上学以来,很多朋友都对这两种增长率的区别感到困惑。这里简单直白的解释一下:同比增速从名字上比较容易理解,指的是与同期相比的增速,比如今年一季度的业务增长和去年一季度可以用同比增速来衡量。具体计算公式为(今年一季度数据-去年一季度数据)/去年一季度数据。这里的季度只是一个例子,月、周甚至日都可以作为一个周期;环比增速这个名字可能没有那么直观,它指的是本周期与上一周期相比的增长,比如三季度和上一周期。与二季度相比,业务增速可以用环比增速来衡量,具体计算公式为(二季度数据-一季度数据)/一季度数据。当然,这里的季度只是一个例子,月、周甚至日也可以作为一个周期。根据具体表情况计算链增长率。我们无法确保每次获取的数据都是类似的格式。不同格式的数据在计算链增长率时会有一些小的差异。环比增长率情况的计算——先看数据集长什么样子:这是一个表的形式,不同的年份,不同产品的销量,这样的数据形式计算环比增长率比较简单在这种形式,不需要提前过多的整理数据。这里需要注意的是,我们要保留年份信息,而用于计算的函数会??对表中所有的数值数据进行环比计算,所以需要提前将年份信息转化为索引:df1=df.set_index("year")#为了不改变原始数据,将充值后的索引数据赋值给df1df1#查看修改后的索引数据集修改后的索引表可以直接计算:df1.pct_change()#pct_change()方法计算当前元素与上一个元素的百分比变化的输出结果:这个计算是与上一年相比的同比增长率。当然,在实际工作中,一般不会保留那么多小数位,所以需要处理:round(df1.pct_change(),4)#保留四位小数,由于增长率一般是百分比,所以这里是小数点后四位的输出结果:这基本上就是常见的环比增长率。计算环比增速情况2我们再来看一个数据集:这个数据集明显比上一个数据集要复杂一点,这是整个数据集的前十行。让我们在下面简要探讨一下这个数据集。:首先一目了然,一共有三列,分别是商品ID、年份、销售额;那么需要探查有多少商品ID,也就是有多少商品,几年的数据:data.ID.unique()#有几个商品ID输出结果:array(['001','002','003','004','005','006'],dtype=object)一共有6个产品data.year.unique()#查看一共几年的数据输出结果:array(['2016','2017','2018','2019'],dtype=object)一共有4年的数据。那么如何计算这类数据的链增长率呢?有两种方法,一种是将原始数据集转换成第一个数据集,第二种是在不改变原始数据集的情况下计算链增长率。1.通过datapivoting处理原始数据:data1=data.pivot(index="ID",columns="year",values="amount")data1#为了不改变原始数据,将datapivot结果赋值给data1输出结果:这里的行索引和列名可以互换,可以在data.pivot()的参数中设置。虽与第一种情况相似,但仔细观察又有所不同。在一种情况下,数据集的行索引是年份,而此数据中的行索引是产品ID。事实上,这没有任何效果。计算链增长率的方法中有参数可以解决这种情况:data1.pct_change(axis='columns')#只需要设置轴信息就可以改变计算方向输出结果:水平排列就是增长每年每种产品的比率。接下来,让我们看看另一种不处理数据的方法。看方法二,由于总共有四年的数据,规律很明显,所以采用循环法计算链增长率:s=pd.Series()#新建一个空系列来放置计算resultsforiindata["ID"].unique():#行索引为产品ID,所以有多少种商品,就有多少次循环data_new=data[data["ID"]==i]#提取同一个产品的数据s=pd.concat([s,data_new["amount"].pct_change()])#计算一个产品的环比增长率,andsplicingthedemeritcalculatedbythepriceintotheseriess#Viewthefinalresultoutput:0NaN1-0.47938022.4026893-0.2839624NaN50.3867616-0.1659267-0.6011668NaN90.09165510-0.773608110.72302812NaN13-0.241018140.534504150.20014516NaN170.03589918-0.091471190.32854320NaN21-0.261491220.32679423-0.903687dtype:float64得到这个结果后,可以把结果作为一个新列表添加到原表中,方便对比查看:data["growthrate"]=round(s,4)data.head(10)#由于数据集比较长,只查看前十行的输出结果:另一个常用参数periods官方文档对该参数的解释如下:需要的时间形成百分比变化。说白了就是链式计算的循环。比如上面所有的计算都是下一个周期和上一个周期的链增长。它还可以计算出第三期与第一期相比的环比增长。只需要设置periods=2,就可以实现这样的需求:df1.pct_change(periods=2)#以第一个数据集为例,查看这个参数的效果输出:关于上面所有的计算结果,感兴趣的童鞋可以根据文章开头的公式手动计算,pct_change()计算出来的结果是一样的。怎么计算链增长率有没有问题,YEAH!
