當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas DataFrame pct_change方法用法及代碼示例


Pandas DataFrame.pct_change(~) 計算 DataFrame 每一列的連續值之間的百分比變化。

參數

1.periods | int | optional

如果是 periods=2 ,則將使用後麵兩行的值計算百分比變化。默認情況下, periods=1 ,這意味著前一行中的值將用於計算百分比變化。

2. fill_method | string | optional

填補缺失值的規則:

說明

"backfill""bfill"

使用下一個非NaN 值進行填充。

"pad""ffill"

使用之前的非NaN值來填充。

默認情況下,fill_method="pad"

警告

無論 fill_method 如何,第一行始終具有 NaN,因為沒有先前的值來計算百分比變化。

3. limit | int | optional

停止填充之前要填充的連續NaN的數量。默認情況下,limit=None

4. freq | stringtimedeltaDateOffset | optional

當 DataFrame 是時間序列時使用的時間間隔。默認情況下,freq=None

返回值

DataFrame 保存每列中值的百分比變化。

例子

基本用法

考慮以下 DataFrame :

df = pd.DataFrame({"A":[2,4,12], "B":[1,3,15]})
df



   A   B
0  2   1
1  4   3
2  12  15

要計算 df 中每列的連續值的百分比變化:

df.pct_change()



   A    B
0  NaN  NaN
1  1.0  2.0
2  2.0  4.0

在此,請注意以下事項:

  • 第一行始終是NaN,因為沒有用於計算百分比變化的先前值。

  • 為了解釋如何計算這些百分比變化,請以右下角的值 ( 4.0 ) 為例。該值的計算方法是取 df 中先前值 ( 15-3=12 ) 之間的差值,然後將該差值除以先前值 ( 12/3=4.0 )。

指定期間

考慮以下 DataFrame :

df = pd.DataFrame({"A":[2,4,12], "B":[1,3,15]})
df



   A   B
0  2   1
1  4   3
2  12  15

默認情況下, periods=1 ,這意味著前一行用於計算百分比變化:

df.pct_change()   # periods=1



   A    B
0  NaN  NaN
1  1.0  2.0
2  2.0  4.0

要使用前 2 行中的值計算百分比變化:

df.pct_change(periods=2)



   A    B
0  NaN  NaN
1  NaN  NaN
2  5.0  14.0

我們得到第二行的NaN,因為沒有可以比較的行。

注意

要使用後續行來計算百分比變化,請設置 periods=-1

指定fill_method

考慮以下帶有一些缺失值的DataFrame:

df = pd.DataFrame({"A":[2,pd.np.nan,12], "B":[1,3,pd.np.nan]})
df



   A     B
0  2.0   1.0
1  NaN   3.0
2  12.0  NaN
軟填充

默認,fill_method="pad",這意味著以前的NaNvalue 用於填充NaN

df.pct_change()   # fill_method="pad"



   A    B
0  NaN  NaN
1  0.0  2.0
2  5.0  0.0

請注意,這相當於在以下內容上調用pct_change()

pd.DataFrame({"A":[2,2,12], "B":[1,3,3]})



   A   B
0  2   1
1  2   3
2  12  3
警告

無論 fill_method 為何,第一行始終具有 NaN,因為沒有用於計算百分比變化的先前值。

填充

填寫NaN使用下一個NaN DataFrame 中的值:

df.pct_change(fill_method="bfill")



   A    B
0  NaN  NaN
1  5.0  2.0
2  0.0  NaN

請注意,這相當於在以下內容上調用pct_change()

pd.DataFrame({"A":[2,12,12], "B":[1,3,pd.np.NaN]})



   A   B
0  2   1
1  12  3
2  12  NaN

請注意右下角的 NaN 仍然是 NaN - 這是因為下一行中不存在非 NaN(沒有下一行)。

指定頻率

考慮以下時間序列 DataFrame:

idx = pd.date_range(start="2020-12-20", periods=4)
df = pd.DataFrame({"A":[2,4,12,24], "B":[1,3,15,30]}, index=idx)
df



            A  B
2020-12-20  2  1
2020-12-21  4  3
2020-12-22  12  15
2020-12-23  24  30

計算每 2 天的百分比變化(例如 12-2012-22 ):

df.pct_change(freq="2D")



            A    B
2020-12-20  NaN  NaN
2020-12-21  NaN  NaN
2020-12-22  5.0  14.0
2020-12-23  5.0  9.0

在這裏,我們獲得前 2 行的 NaN 值,因為沒有用於計算百分比變化的日期 12-1812-19

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | pct_change method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。