計算 Pandas 的百分比變化
Fariba Laiq
2023年1月30日
2022年5月16日
pct_change()
是 Pandas 中的一個函式,預設情況下計算前一行元素之間的百分比變化。在時間序列資料的情況下,這個函式被頻繁使用。
此函式的輸出是一個 DataFrame,其中包含上一行的百分比變化值。當我們呼叫這個函式時,我們可以指定其他行作為引數進行比較。
它適用於以下公式。
$$
Pct \space Change = {(Current-Previous) \over Previous}*100
$$
使用 pct_change()
計算 Pandas 的百分比變化
此方法接受四個可選引數,如下所示。
periods
- 具有預設值1
。它指定要移動的期間以計算百分比變化。fill_method
- 指定在計算百分比變化之前如何處理 NA。limit
- 指定在停止之前要填充的連續 NA 的數量。freq
- 從時間序列 API 中使用的增量(例如'M'
或BDay()
)。
以下是計算兩行之間百分比變化的簡單程式碼。我們將使用 DataFrame 物件呼叫 pct_change()
方法,而不傳遞任何引數。
#Python 3.x
import pandas as pd
df = pd.DataFrame([[2, 4, 6], [1, 2, 3], [5, 7, 9]])
print(df.pct_change())
輸出:
在計算 Pandas 的百分比變化之前填充缺失值
例如,我們在 DataFrame 中有 missing
或 None
值。在計算百分比變化時,缺失的資料將由上一行中的相應值填充。
這裡,ffill
表示前向填充。
#Python 3.x
import pandas as pd
df = pd.DataFrame([[2, 4, 6], [1, None, 3], [None, 7, 9]])
print(df.pct_change(fill_method ='ffill'))
計算 Pandas 中 Multi-Index
DataFrame 的百分比變化
我們還可以計算多索引 DataFrame 的百分比變化。我們可以使用 groupby()
方法根據某些標準將資料分成組,然後應用 pct_change()
。
#Python 3.x
df = pd.DataFrame(
index = pd.MultiIndex.from_product([['Jhon', 'Alia'],
['CS'],
['Python', 'Java', 'Dart'],
['Mid Term', 'Final Term']],
names=['Student', 'Department', 'Course', 'Exam']),
data={'Marks':[50, 40, 30, 60, 40,
40, 30, 70, 40, 50,
20, 30]})
print(df)
print(df.groupby(level=[1,2,3]).pct_change())
輸出:
Author: Fariba Laiq
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn