Python Pandas Series.pct_change()
Pandas pct_change()方法适用于有数字数据的系列,计算n个元素后的百分比变化。默认情况下,它计算的是当前元素与前一个元素的变化百分比。(当前-前次/前次)*100。
首先,n(n=period)值总是_NaN_,因为没有以前的值来计算变化。
语法: Series.pct_change(periods=1, fill_method=’pad’, limit=None)
参数:
periods:定义了当前值和前值之间的差距。默认为1
fill_method:定义了用于处理空值的方法。
limit:在停止之前连续填充NaN值的数量。
回报类型:带有百分比变化的数字系列
示例 #1:
在这个方法中,使用Pandas Series()从Python列表中创建一个系列。这个系列不包含任何空值,因此pct_change()方法被直接调用,参数period的默认值是1。
# 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
输出:
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。
使用公式,pct_change= x-0/0 = 无限。
例子#2:处理空值
在这个例子中,一些空值也是用Numpy的np.nan方法创建的,并传递给列表。’bfill‘ 被传递给fill_method。bfill代表Back fill,它将用Null值的下一个位置的值来填充。
# 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。