Pandas Series: pct_change() function
Percentage change between the current and a prior element
The pct_change() function is used to get percentage change between the current and a prior element.
Computes the percentage change from the immediately previous row by default. This is useful in comparing the percentage of change in a time series of elements.
Syntax:
Series.pct_change(self, periods=1, fill_method='pad', limit=None, freq=None, **kwargs)
Parameters:
Name | Description | Type/Default Value | Required / Optional |
---|---|---|---|
periods | Periods to shift for forming percent change. | int Default Value: 1 |
Required |
fill_method | How to handle NAs before computing percent changes. | str Default Value: ‘pad’ |
Required |
limit | The number of consecutive NAs to fill before stopping. | int Default Value: None |
Required |
freq | Increment to use from time series API (e.g. ‘M’ or BDay()). | DateOffset, timedelta, or offset alias string | Optional |
**kwargs | Additional keyword arguments are passed into DataFrame.shift or Series.shift. | Required |
Returns: chg - Series or DataFrame
The same type as the calling object.
Example - Series:
Python-Pandas Code:
import numpy as np
import pandas as pd
s = pd.Series([80, 81, 75])
s
Output:
0 80 1 81 2 75 dtype: int64
Python-Pandas Code:
import numpy as np
import pandas as pd
s = pd.Series([80, 81, 75])
s.pct_change()
Output:
0 NaN 1 0.012500 2 -0.074074 dtype: float64
Python-Pandas Code:
import numpy as np
import pandas as pd
s = pd.Series([80, 81, 75])
s.pct_change(periods=2)
Output:
0 NaN 1 NaN 2 -0.0625 dtype: float64
Example - See the percentage change in a Series where filling NAs with last valid observation forward to next valid:
Python-Pandas Code:
import numpy as np
import pandas as pd
s = pd.Series([80, 81, None, 75])
s
Output:
0 80.0 1 81.0 2 NaN 3 75.0 dtype: float64
Python-Pandas Code:
import numpy as np
import pandas as pd
s = pd.Series([80, 81, None, 75])
s.pct_change(fill_method='ffill')
Output:
0 NaN 1 0.012500 2 0.000000 3 -0.074074 dtype: float64
Example - DataFrame:
Percentage change in French franc, Deutsche Mark, and Italian lira from 2000-01-01 to 2000-03-01
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame({
'FR': [5.0505, 5.0963, 5.3149],
'GR': [2.7246, 2.7482, 2.8519],
'IT': [904.74, 910.01, 960.13]},
index=['2000-01-01', '2000-02-01', '2000-03-01'])
df
Output:
FR GR IT 2000-01-01 5.0505 2.7246 904.74 2000-02-01 5.0963 2.7482 910.01 2000-03-01 5.3149 2.8519 960.13
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame({
'FR': [5.0505, 5.0963, 5.3149],
'GR': [2.7246, 2.7482, 2.8519],
'IT': [904.74, 910.01, 960.13]},
index=['2000-01-01', '2000-02-01', '2000-03-01'])
df.pct_change()
Output:
FR GR IT 2000-01-01 NaN NaN NaN 2000-02-01 0.009068 0.008662 0.005825 2000-03-01 0.042894 0.037734 0.055076
Example - Percentage of change in GOOG and APPL stock volume. Shows computing the percentage change between columns:
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame({
'2019': [1869950, 32586265],
'2018': [1600923, 42912316],
'2017': [1471819, 42403351]},
index=['GOOG', 'APPL'])
df
Output:
2019 2018 2017 GOOG 1869950 1600923 1471819 APPL 32586265 42912316 42403351
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame({
'2019': [1869950, 32586265],
'2018': [1600923, 42912316],
'2017': [1471819, 42403351]},
index=['GOOG', 'APPL'])
df.pct_change(axis='columns')
Output:
2019 2018 2017 GOOG NaN -0.143869 -0.080643 APPL NaN 0.316884 -0.011861
Previous: Get the smallest n elements in Pandas
Next: Product of the values for the requested Pandas axis
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics