溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中怎么計(jì)算環(huán)比增長率

發(fā)布時(shí)間:2021-07-05 17:44:17 來源:億速云 閱讀:293 作者:Leah 欄目:編程語言

Python中怎么計(jì)算環(huán)比增長率,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

 認(rèn)識環(huán)比增長率

很多企業(yè)比較注重自己的業(yè)務(wù)增長情況,時(shí)常會需要計(jì)算同比增長率和環(huán)比增長率。從上學(xué)的時(shí)候就有很多小伙伴搞不清楚這兩個(gè)增長率之間的區(qū)別,這里簡單直白的解釋一下:

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

環(huán)比增長率的名字可能沒有那么直觀,它指的是這一個(gè)周期與上一個(gè)周期相比增長情況如何,比如第三季度和第二季度相比,業(yè)務(wù)增長情況就可以用環(huán)比增長率來衡量,具體計(jì)算公式為(第二季度數(shù)據(jù)  - 第一季度數(shù)據(jù))/第一季度數(shù)據(jù)。當(dāng)然這里的季度也只是舉例用的,月份,周甚至天也都可以作周期。

根據(jù)具體表格情況計(jì)算環(huán)比增長率

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

計(jì)算環(huán)比增長率情況一

首先看一下數(shù)據(jù)集長什么樣子:

Python中怎么計(jì)算環(huán)比增長率

這是一種形式的表格,不同的年份,不同產(chǎn)品的銷售額,對這樣一種形式的數(shù)據(jù)計(jì)算環(huán)比增長率,是比較簡單的一種形式,不需要提前對數(shù)據(jù)做過多的整理。

這里需要注意的是,我們希望能夠保留年份信息,而用來計(jì)算的函數(shù)會把表格中所有數(shù)值型數(shù)據(jù)都進(jìn)行環(huán)比運(yùn)算,所以需要提前將年份信息轉(zhuǎn)化成索引:

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

Python中怎么計(jì)算環(huán)比增長率

修改索引后的表可以直接進(jìn)行計(jì)算了:

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

輸出結(jié)果:

Python中怎么計(jì)算環(huán)比增長率

這樣計(jì)算的就是每一年和前一年相比的一個(gè)環(huán)比增長率,當(dāng)然實(shí)際工作中一般不會保留這么多位小數(shù),需要處理一下:

round(df1.pct_change(),4) #保留四位小數(shù),由于增長率一般是百分?jǐn)?shù),所以這里保留4位小數(shù)

輸出結(jié)果:

Python中怎么計(jì)算環(huán)比增長率

這樣基本就是常見的環(huán)比增長率了。

計(jì)算環(huán)比增長率情況二

來看另一種樣子的數(shù)據(jù)集:

Python中怎么計(jì)算環(huán)比增長率

這一種數(shù)據(jù)集明顯比上一個(gè)數(shù)據(jù)集復(fù)雜了一點(diǎn),而且這是整個(gè)數(shù)據(jù)集的前十行,下邊我們簡單探索下這個(gè)數(shù)據(jù)集:

首先一目了然,一共有三列,分別是產(chǎn)品ID,年份,銷售金額;

然后需要探索一共有多少個(gè)產(chǎn)品ID,即一共有幾種產(chǎn)品,還有一共是幾年的數(shù)據(jù):

data.ID.unique() #產(chǎn)看有幾種產(chǎn)品ID

輸出結(jié)果:

array(['001', '002', '003', '004', '005', '006'], dtype=object)

一共有6種產(chǎn)品

data.year.unique() #查看一共有幾年數(shù)據(jù)

輸出結(jié)果:

array(['2016', '2017', '2018', '2019'], dtype=object)

一共有4年的數(shù)據(jù)。

那么這種數(shù)據(jù)要怎樣計(jì)算環(huán)比增長率呢?

有兩種方法,一種是將原數(shù)據(jù)集轉(zhuǎn)化成第一種數(shù)據(jù)集情況的樣子,第二種是不改變原數(shù)據(jù)集計(jì)算環(huán)比增長率

先看方法一

通過數(shù)據(jù)透視的方法,將原數(shù)據(jù)進(jìn)行加工:

data1 = data.pivot(index = "ID",columns="year",values="amount" )data1  #為了不改變原數(shù)據(jù),將數(shù)據(jù)透視后的結(jié)果賦值給data1

輸出結(jié)果:

Python中怎么計(jì)算環(huán)比增長率

這里的行索引和列名可以進(jìn)行互換,在data.pivot()的參數(shù)中進(jìn)行設(shè)置就可以,雖然和第一種情況類似,但是仔細(xì)觀察又發(fā)現(xiàn)了不同,第一種情況數(shù)據(jù)集的行索引是年份,這份數(shù)據(jù)中行索引是產(chǎn)品ID,其實(shí)這個(gè)是沒有影響的,計(jì)算環(huán)比增長率的方法中有參數(shù)可以解決這種情況:

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

輸出結(jié)果:

Python中怎么計(jì)算環(huán)比增長率

橫向排列的就是每一個(gè)產(chǎn)品每一年的環(huán)比增長率,接下來,看另一種不對數(shù)據(jù)進(jìn)行處理的方法。

再看方法二

由于一共是四年數(shù)據(jù),規(guī)律明顯,所以運(yùn)用循環(huán)的方法計(jì)算環(huán)比增長率:

s = pd.Series() #新建一個(gè)空series用來放置計(jì)算結(jié)果for i in data["ID"].unique():  #行索引是產(chǎn)品ID,所以有多少種商品,就循環(huán)多少次 data_new = data[data["ID"]==i] #將相同產(chǎn)品的數(shù)據(jù)提取出來 s =  pd.concat([s,data_new["amount"].pct_change()])  #計(jì)算一種產(chǎn)品的環(huán)比增長率,并價(jià)格計(jì)算出的記過拼接到series中s #查看最終結(jié)果

輸出結(jié)果:

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

得出這個(gè)結(jié)果后,可以把結(jié)果作為一個(gè)新列添加到原表當(dāng)中,方便對比查看:

data["growth rate"]=round(s,4)data.head(10) #由于數(shù)據(jù)集比較長,只查看前十行

輸出結(jié)果:

Python中怎么計(jì)算環(huán)比增長率

另一個(gè)常用參數(shù)periods

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

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

輸出結(jié)果:

Python中怎么計(jì)算環(huán)比增長率

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI