Python|熊猫系列.pct_change()
Pandas pct_change() 方法应用于具有数字数据的系列,以计算 n 个元素后的百分比变化。默认情况下,它计算当前元素相对于前一个元素的百分比变化。 (当前-以前/以前)* 100。
首先, n(n=period) 值始终为NaN ,因为没有先前的值来计算变化。
Syntax: Series.pct_change(periods=1, fill_method=’pad’, limit=None)
Parameters:
periods: Defines gap between current and previous value. Default is 1
fill_method: Defines method used to handle null values
limit: Number of consecutive NaN values to fill before stopping.
Return type: Numeric series with percentage change
示例 #1:
在此方法中,使用 Pandas Series() 从Python列表创建一个系列。该系列不包含任何空值,因此 pct_change() 方法直接使用period参数的默认值调用,即 1。
Python3
# importing pandas module
import pandas as pd
# importing numpy module
import numpy as np
# creating list
list = [10, 14, 20, 25, 12.5, 13, 0, 50]
# creating series
series = pd.Series(list)
# calling method
result = series.pct_change()
# display
result
Python3
# importing pandas module
import pandas as pd
# importing numpy module
import numpy as np
# creating list
list =[10, np.nan, 14, 20, 25, 12.5, 13, 0, 50]
# creating series
series = pd.Series(list)
# calling method
result = series.pct_change(fill_method ='bfill')
# display
result
输出:
0 NaN
1 0.400000
2 0.428571
3 0.250000
4 -0.500000
5 0.040000
6 -1.000000
7 inf
dtype: float64
如输出所示,前 n 个值始终等于 NaN。其余值等于旧值的百分比变化,并存储在与调用者序列相同的位置。
注意:由于倒数第二个值为 0,因此百分比变化为 inf。 inf 代表无限。
使用公式,pct_change= x-0/0 = Infinite示例 #2:处理 Null 值
在此示例中,还使用 Numpy 的 np.nan 方法创建了一些空值并将其传递给列表。 ' bfill ' 被传递给 fill_method。 bfill代表回填,它将在 Null 值的下一个位置填充值。
Python3
# importing pandas module
import pandas as pd
# importing numpy module
import numpy as np
# creating list
list =[10, np.nan, 14, 20, 25, 12.5, 13, 0, 50]
# creating series
series = pd.Series(list)
# calling method
result = series.pct_change(fill_method ='bfill')
# display
result
输出:
0 NaN
1 0.400000
2 0.000000
3 0.428571
4 0.250000
5 -0.500000
6 0.040000
7 -1.000000
8 inf
dtype: float64
从输出中可以看出,位置 1 的值为 40,因为 NaN 被 14 替换。因此,(14-10/10) *100 = 40。下一个值为 0,因为 14 和 14 的百分比变化为 0 .