python如何計算環比增長率

python如何計算環比增長率

CDA數據分析師 出品

認識環比增長率

很多企業比較注重自己的業務增長情況,時常會需要計算同比增長率和環比增長率。從上學的時候就有很多小夥伴搞不清楚這兩個增長率之間的區別,這裡簡單直白的解釋一下:

同比增長率從名字上就比較容易理解,指的是同期相比增長情況如何,比如今年一季度和去年一季度相比業務增長情況就可以用同比增長率來衡量,具體的計算公式為(今年一季度數據 - 去年一季度數據)/去年一季度數據。這裡的季度只是舉例用的,月份,周甚至天都可以作週期;

環比增長率的名字可能沒有那麼直觀,它指的是這一個週期與上一個週期相比增長情況如何,比如第三季度和第二季度相比,業務增長情況就可以用環比增長率來衡量,具體計算公式為(第二季度數據 - 第一季度數據)/第一季度數據。當然這裡的季度也只是舉例用的,月份,周甚至天也都可以作週期。

根據具體表格情況計算環比增長率

我們不能確保每次拿到的數據都是類似的格式,對不同格式的數據在計算環比增長率的時候,會有一些小差別。

計算環比增長率情況一

首先看一下數據集長什麼樣子:

python如何計算環比增長率

這是一種形式的表格,不同的年份,不同產品的銷售額,對這樣一種形式的數據計算環比增長率,是比較簡單的一種形式,不需要提前對數據做過多的整理。

這裡需要注意的是,我們希望能夠保留年份信息,而用來計算的函數會把表格中所有數值型數據都進行環比運算,所以需要提前將年份信息轉化成索引:

df1 = df.set_index("year") #為了不改變原數據,將充值索引後的數據賦值給df1df1 #查看修改索引後的數據集

python如何計算環比增長率

修改索引後的表可以直接進行計算了:

df1.pct_change() #pct_change()方法計算當前元素與先前元素之間的百分比變化

輸出結果:

python如何計算環比增長率

這樣計算的就是每一年和前一年相比的一個環比增長率,當然實際工作中一般不會保留這麼多位小數,需要處理一下:

round(df1.pct_change(),4) #保留四位小數,由於增長率一般是百分數,所以這裡保留4位小數

輸出結果:

python如何計算環比增長率

這樣基本就是常見的環比增長率了。

計算環比增長率情況二

來看另一種樣子的數據集:

python如何計算環比增長率

這一種數據集明顯比上一個數據集複雜了一點,而且這是整個數據集的前十行,下邊我們簡單探索下這個數據集:

首先一目瞭然,一共有三列,分別是產品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

輸出結果:

python如何計算環比增長率

這裡的行索引和列名可以進行互換,在data.pivot()的參數中進行設置就可以,雖然和第一種情況類似,但是仔細觀察又發現了不同,第一種情況數據集的行索引是年份,這份數據中行索引是產品ID,其實這個是沒有影響的,計算環比增長率的方法中有參數可以解決這種情況:

data1.pct_change(axis='columns') #只需要設置一下軸信息就可以改變運算方向

輸出結果:

python如何計算環比增長率

橫向排列的就是每一個產品每一年的環比增長率,接下來,看另一種不對數據進行處理的方法。

再看方法二

由於一共是四年數據,規律明顯,所以運用循環的方法計算環比增長率:

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) #由於數據集比較長,只查看前十行

輸出結果:

python如何計算環比增長率

另一個常用參數periods

官方文檔中對這個參數的解釋是這樣的:形成百分比變化所需的時間。用直白的話解釋就是進行環比運算的週期,比如上邊所有的計算都是下一個週期和上一個週期進行的環比增長,也可計算諸如第三期與第一期相比的環比增長,只需要設置periods=2,就可以實現這樣的需求:

df1.pct_change(periods=2)#用第一個數據集為例,查看這個參數的效果

輸出結果:

python如何計算環比增長率

關於上述計算的所有結果,感興趣的童鞋可以按照文章開頭的公式手工計算一下,看下和pct_change()計算的結果都是一樣的哦。

如何計算環比增長率是不是已經沒有什麼問題啦,YEAH!

python如何計算環比增長率

更多優質內容及精彩資訊,點擊【瞭解更多】進入!


分享到:


相關文章: