北京IT外包服務商帶您了解環比增長率
2020-04-24 13:59 作者:艾銻無限 瀏覽量:
北京IT外包服務商帶您了解環比增長率
很多企業比較注重自己的業務增長情況,時常會需要計算同比增長率和環比增長率。從上學的時候就有很多小伙伴搞不清楚這兩個增長率之間的區別,這里簡單直白的解釋一下:
同比增長率從名字上就比較容易理解,指的是同期相比增長情況如何,比如今年一季度和去年一季度相比業務增長情況就可以用同比增長率來衡量,具體的計算公式為(今年一季度數據 - 去年一季度數據)/去年一季度數據。這里的季度只是舉例用的,月份,周甚至天都可以作周期;
環比增長率的名字可能沒有那么直觀,它指的是這一個周期與上一個周期相比增長情Python如何計算環比增長率
況如何,比如第三季度和第二季度相比,業務增長情況就可以用環比增長率來衡量,具體計算公式為(第二季度數據 - 第一季度數據)/第一季度數據。當然這里的季度也只是舉例用的,月份,周甚至天也都可以作周期。
根據具體表格情況計算環比增長率
我們不能確保每次拿到的數據都是類似的格式,對不同格式的數據在計算環比增長率的時候,會有一些小差別。
計算環比增長率情況一
首先看一下數據集長什么樣子:
這是一種形式的表格,不同的年份,不同產品的銷售額,對這樣一種形式的數據計算環比增長率,是比較簡單的一種形式,不需要提前對數據做過多的整理。
這里需要注意的是,我們希望能夠保留年份信息,而用來計算的函數會把表格中所有數值型數據都進行環比運算,所以需要提前將年份信息轉化成索引:
df1 = df.set_index("year") #為了不改變原數據,將充值索引后的數據賦值給df1df1 #查看修改索引后的數據集
修改索引后的表可以直接進行計算了:
df1.pct_change() #pct_change()方法計算當前元素與先前元素之間的百分比變化
輸出結果:
這樣計算的就是每一年和前一年相比的一個環比增長率,當然實際工作中一般不會保留這么多位小數,需要處理一下:
round(df1.pct_change(),4) #保留四位小數,由于增長率一般是百分數,所以這里保留4位小數
輸出結果:
這樣基本就是常見的環比增長率了。
計算環比增長率情況二
來看另一種樣子的數據集:
這一種數據集明顯比上一個數據集復雜了一點,而且這是整個數據集的前十行,下邊我們簡單探索下這個數據集:
首先一目了然,一共有三列,分別是產品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年的數據。
那么這種數據要怎樣計算環比增長率呢?
有兩種方法,一種是將原數據集轉化成第一種數據集情況的樣子,第二種是不改變原數據集計算環比增長率
先看方法一
通過數據透視的方法,將原數據進行加工:
data1 = data.pivot(index = "ID",columns="year",values="amount" )data1 #為了不改變原數據,將數據透視后的結果賦值給data1
輸出結果:
這里的行索引和列名可以進行互換,在data.pivot()的參數中進行設置就可以,雖然和第一種情況類似,但是仔細觀察又發現了不同,第一種情況數據集的行索引是年份,這份數據中行索引是產品ID,其實這個是沒有影響的,計算環比增長率的方法中有參數可以解決這種情況:
data1.pct_change(axis='columns') #只需要設置一下軸信息就可以改變運算方向
輸出結果:
橫向排列的就是每一個產品每一年的環比增長率,接下來,看另一種不對數據進行處理的方法。
再看方法二
由于一共是四年數據,規律明顯,所以運用循環的方法計算環比增長率:
s = pd.Series() #新建一個空series用來放置計算結果for i in data["ID"].unique(): #行索引是產品ID,所以有多少種商品,就循環多少次 data_new = data[data["ID"]==i] #將相同產品的數據提取出來 s = pd.concat([s,data_new["amount"].pct_change()]) #計算一種產品的環比增長率,并價格計算出的記過拼接到series中s #查看最終結果
輸出結果:
0 NaN1 -0.4793802 2.4026893 -0.2839624 NaN5 0.3867616 -0.1659267 -0.6011668 NaN9 0.09165510 -0.77360811 0.72302812 NaN13 -0.24101814 0.53450415 0.20014516 NaN17 0.03589918 -0.09147119 0.32854320 NaN21 -0.26149122 0.32679423 -0.903687dtype: float64
得出這個結果后,可以把結果作為一個新列添加到原表當中,方便對比查看:
data["growth rate"]=round(s,4)data.head(10) #由于數據集比較長,只查看前十行
輸出結果:
另一個常用參數periods
艾銻無限科技專業:
IT外包、
企業外包、
北京IT外包、
桌面運維、
弱電工程、網站開發、wifi覆蓋方案,
網絡外包,網絡管理服務,
網管外包,綜合布線,
服務器運維服務,中小企業
it外包服務,服務器維保公司,硬件運維,網站運維服務
官方文檔中對這個參數的解釋是這樣的:形成百分比變化所需的時間。用直白的話解釋就是進行環比運算的周期,比如上邊所有的計算都是下一個周期和上一個周期進行的環比增長,也可計算諸如第三期與第一期相比的環比增長,只需要設置periods=2,就可以實現這樣的需求:
df1.pct_change(periods=2)#用第一個數據集為例,查看這個參數的效果
輸出結果:
關于上述計算的所有結果,感興趣的童鞋可以按照文章開頭的公式手工計算一下,看下和pct_change()計算的結果都是一樣的哦。
如何計算環比增長率是不是已經沒有什么問題啦,YEAH!
以上文章由北京艾銻無限科技發展有限公司整理