計算 Pandas 的百分比變化

Fariba Laiq 2023年1月30日 2022年5月16日
  1. 使用 pct_change() 計算 Pandas 的百分比變化
  2. 在計算 Pandas 的百分比變化之前填充缺失值
  3. 計算 Pandas 中 Multi-Index DataFrame 的百分比變化
計算 Pandas 的百分比變化

pct_change() 是 Pandas 中的一個函式,預設情況下計算前一行元素之間的百分比變化。在時間序列資料的情況下,這個函式被頻繁使用。

此函式的輸出是一個 DataFrame,其中包含上一行的百分比變化值。當我們呼叫這個函式時,我們可以指定其他行作為引數進行比較。

它適用於以下公式。

$$
Pct \space Change = {(Current-Previous) \over Previous}*100
$$

使用 pct_change() 計算 Pandas 的百分比變化

此方法接受四個可選引數,如下所示。

  1. periods - 具有預設值 1。它指定要移動的期間以計算百分比變化。
  2. fill_method - 指定在計算百分比變化之前如何處理 NA。
  3. limit - 指定在停止之前要填充的連續 NA 的數量。
  4. 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 中有 missingNone 值。在計算百分比變化時,缺失的資料將由上一行中的相應值填充。

這裡,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())

輸出:

學生 DataFrame

計算多指數的百分比變化

Author: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

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