Pandas DataFrame.pct_change(~)
計算 DataFrame 每一列的連續值之間的百分比變化。
參數
1.periods
| int
| optional
如果是 periods=2
,則將使用後麵兩行的值計算百分比變化。默認情況下, periods=1
,這意味著前一行中的值將用於計算百分比變化。
2. fill_method
| string
| optional
填補缺失值的規則:
值 |
說明 |
---|---|
|
使用下一個非 |
|
使用之前的非 |
默認情況下,fill_method="pad"
。
警告
無論 fill_method
如何,第一行始終具有 NaN
,因為沒有先前的值來計算百分比變化。
3. limit
| int
| optional
停止填充之前要填充的連續NaN
的數量。默認情況下,limit=None
。
4. freq
| string
或 timedelta
或 DateOffset
| 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"
,這意味著以前的非NaN
value 用於填充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-20
和 12-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-18
和 12-19
。
相關用法
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame pow方法用法及代碼示例
- Python Pandas DataFrame pipe方法用法及代碼示例
- Python PySpark DataFrame printSchema方法用法及代碼示例
- Python Pandas DataFrame product方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame max方法用法及代碼示例
- Python Pandas DataFrame swaplevel方法用法及代碼示例
- Python Pandas DataFrame agg方法用法及代碼示例
- Python Pandas DataFrame copy方法用法及代碼示例
- Python Pandas DataFrame insert方法用法及代碼示例
- Python Pandas DataFrame lt方法用法及代碼示例
- Python Pandas DataFrame all方法用法及代碼示例
- Python Pandas DataFrame unstack方法用法及代碼示例
- Python Pandas DataFrame mean方法用法及代碼示例
- Python PySpark DataFrame filter方法用法及代碼示例
- Python Pandas DataFrame tz_convert方法用法及代碼示例
- Python Pandas DataFrame isin方法用法及代碼示例
- Python PySpark DataFrame collect方法用法及代碼示例
- Python PySpark DataFrame intersect方法用法及代碼示例
- Python PySpark DataFrame dtypes屬性用法及代碼示例
- Python Pandas DataFrame rank方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | pct_change method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。