Как рассчитать процентное изменение в Pandas


Вы можете использовать функцию pct_change() для расчета процентного изменения между значениями в pandas:

#calculate percent change between values in pandas Series
s. pct_change ()

#calculate percent change between rows in pandas DataFrame
df['column_name']. pct_change ()

В следующих примерах показано, как использовать эту функцию на практике.

Пример 1: Процентное изменение в серии панд

В следующем коде показано, как рассчитать процентное изменение между значениями в серии pandas:

import pandas as pd

#create pandas Series
s = pd.Series([6, 14, 12, 18, 19])

#calculate percent change between consecutive values
s. pct_change () 

0 NaN
1 1.333333
2 -0.142857
3 0.500000
4 0.055556
dtype: float64

Вот как были рассчитаны эти значения:

  • Индекс 1: (14 – 6) / 6 = 1,333333
  • Индекс 2: (12 – 14) / 14 = -0,142857
  • Индекс 3: (18 – 12) / 12 = 0,5
  • Индекс 4: (19 – 18) / 18 = 0,055556

Обратите внимание, что вы также можете использовать аргумент Periods для расчета процентного изменения между значениями с разными интервалами:

import pandas as pd

#create pandas Series
s = pd.Series([6, 14, 12, 18, 19])

#calculate percent change between values 2 positions apart
s. pct_change (periods= 2 ) 

0 NaN
1 NaN
2 1.000000
3 0.285714
4 0.583333
dtype: float64

Вот как были рассчитаны эти значения:

  • Индекс 2: (12 – 6) / 6 = 1,000000
  • Индекс 3: (18 – 14) / 14 = 0,285714
  • Индекс 4: (19 – 12) / 12 = 0,583333

Пример 2: Процентное изменение в pandas DataFrame

В следующем коде показано, как рассчитать процентное изменение между последовательными строками в кадре данных pandas:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'period': [1, 2, 3, 4, 5],
 'sales': [6, 7, 7, 9, 12]}) 

#view DataFrame
df

 period sales
0 1 6
1 2 7
2 3 7
3 4 9
4 5 12

#calculate percent change between consecutive values in 'sales' column
df['sales_pct_change'] = df['sales']. pct_change ()

#view updated DataFrame
df

 period sales sales_pct_change
0 1 6 NaN
1 2 7 0.166667
2 3 7 0.000000
3 4 9 0.285714
4 5 12 0.333333

Вот как были рассчитаны эти значения:

  • Индекс 1: (7 – 6) / 6 = 0,166667
  • Индекс 2: (7 – 7) / 7 = 0,000000
  • Индекс 3: (9 – 7) / 7 = 0,285714
  • Индекс 4: (12 – 9) / 9 = 0,333333

Вы можете найти полную документацию по функции pct_change() здесь .

Дополнительные ресурсы

Как рассчитать среднее значение столбцов в Pandas
Как рассчитать медиану в Pandas
Как рассчитать скользящее среднее в Pandas
Как рассчитать скользящую корреляцию в Pandas