【Pandas】pandas Series pct_change

Pandas2.2 Series

Computations descriptive stats

方法 描述
Series.abs() 用于计算 Series 中每个元素的绝对值
Series.all() 用于检查 Series 中的所有元素是否都为 True 或非零值(对于数值型数据)
Series.any() 用于检查 Series 中是否至少有一个元素为 True 或非零值(对于数值型数据)
Series.autocorr() 用于计算 Series 的自相关系数
Series.between() 用于检查 Series 中的每个元素是否在指定的两个值之间(包括边界值)
Series.clip() 用于将 Series 中的元素限制在指定的上下限之间
Series.corr() 用于计算两个 Series 之间的相关系数
Series.count() 用于计算 Series 中非 NA/null 值的数量
Series.cov(other[, min_periods, ddof]) 用于计算两个 Series 之间的协方差
Series.cummax([axis, skipna]) 用于计算 Series 中元素的累积最大值
Series.cummin([axis, skipna]) 用于计算 Series 中元素的累积最小值
Series.cumprod([axis, skipna]) 用于计算 Series 中元素的累积乘积
Series.cumsum([axis, skipna]) 用于计算 Series 中元素的累积和
Series.describe([percentiles, include, exclude]) 用于生成 Series 对象的描述性统计信息的方法
Series.diff([periods]) 用于计算 Series 中元素与前一个元素之间差值的方法
Series.factorize([sort, use_na_sentinel]) 用于将 Series 中的唯一值编码为从 0 开始的整数索引的方法
Series.kurt([axis, skipna, numeric_only]) 用于计算 Series 中数据的峰度(kurtosis)
Series.max([axis, skipna, numeric_only]) 用于计算 Series 中所有元素的最大值
Series.mean([axis, skipna, numeric_only]) 用于计算 Series 中所有元素的算术平均值
Series.median([axis, skipna, numeric_only]) 用于计算 Series 对象中位数的函数
Series.min([axis, skipna, numeric_only]) 用于计算 Series 对象最小值的函数
Series.mode([dropna]) 用于计算 Series 对象中最常出现的值(众数)的函数
Series.nlargest([n, keep]) 用于获取 Series 对象中最大的 n 个值的函数
Series.nsmallest([n, keep]) 用于获取 Series 对象中最小的 n 个值的函数
Series.pct_change([periods, fill_method, …]) 用于计算 Series 对象中元素与前一个元素之间百分比变化的方法

pandas.Series.pct_change

pandas.Series.pct_change 是 pandas 库中用于计算 Series 对象中元素与前一个元素之间百分比变化的方法。它常用于时间序列分析,以了解数据的变化率。下面将详细描述该方法及其参数,并给出示例及结果。

函数描述
  • 功能:返回 Series 中每个元素与其前一个元素之间的百分比变化。

  • 参数

    • periods:整数,默认为 1,表示与前几个元素进行比较。正值表示向前比较,负值表示向后比较。
    • fill_method:字符串,默认为 ‘pad’,表示如何处理缺失值(NaN)。可选值有:
      • 'pad''ffill':使用上一个非缺失值填充。
      • 'backfill''bfill':使用下一个非缺失值填充。
    • limit:整数,默认为 None,表示在填充时可以使用的最大连续缺失值数量。
    • freq:频率偏移量,默认为 None,表示用于计算变化的时间频率。如果提供了频率,则会根据频率来确定比较的元素。
  • 返回值:返回一个新的 Series,其中每个元素是原 Series 中对应位置元素与其前(或后)periods 个元素的百分比变化。首(尾)部没有足够元素进行计算的位置将填充为 NaN。

示例代码及结果
示例 1:基本用法
import pandas as pd

# 创建一个简单的数值型 Series
data = pd.Series([1, 2, 4, 7, 11])

# 使用 pct_change 方法计算百分比变化
pct_change_result = data.pct_change()

print("基本用法结果:")
print(pct_change_result)
输出结果:
基本用法结果:
0         NaN
1    1.000000
2    1.000000
3    0.750000
4    0.571429
dtype: float64

在这个例子中,pct_change 方法计算了 Series 数据的百分比变化。由于第一个元素没有前一个元素可以比较,因此它的百分比变化为 NaN。其他元素的百分比变化分别为:

  • 第二个元素 (2) 相对于第一个元素 (1) 的变化率为 (2-1)/1 = 1.0 或 100%。
  • 第三个元素 (4) 相对于第二个元素 (2) 的变化率为 (4-2)/2 = 1.0 或 100%。
  • 第四个元素 (7) 相对于第三个元素 (4) 的变化率为 (7-4)/4 = 0.75 或 75%。
  • 第五个元素 (11) 相对于第四个元素 (7) 的变化率为 (11-7)/7 ≈ 0.5714 或 57.14%。
示例 2:指定 periods 参数
# 使用 pct_change 方法并指定 periods 参数
pct_change_periods_result = data.pct_change(periods=2)

print("指定 periods 参数的结果:")
print(pct_change_periods_result)
输出结果:
指定 periods 参数的结果:
0     NaN
1     NaN
2    3.00
3    2.50
4    1.75
dtype: float64

在这个例子中,pct_change 方法计算了 Series 数据相对于两个元素之前的百分比变化。由于前两个元素没有足够的前两个元素可以比较,因此它们的百分比变化为 NaN。其他元素的百分比变化分别为:

  • 第三个元素 (4) 相对于第一个元素 (1) 的变化率为 (4-1)/1 = 3.0 或 300%。
  • 第四个元素 (7) 相对于第二个元素 (2) 的变化率为 (7-2)/2 = 2.5 或 250%。
  • 第五个元素 (11) 相对于第三个元素 (4) 的变化率为 (11-4)/4 = 1.75 或 175%。
示例 3:使用 fill_method 参数
# 创建一个包含缺失值的 Series
data_with_na = pd.Series([1, 2, None, 4, 5])

# 使用 pct_change 方法并指定 fill_method 参数
pct_change_fill_method_result = data_with_na.pct_change(fill_method='bfill')

print("使用 fill_method 参数的结果:")
print(pct_change_fill_method_result)
输出结果:
使用 fill_method 参数的结果:
0     NaN
1    1.00
2    1.00
3    0.00
4    0.25
dtype: float64
示例 4:使用 limit 参数
# 使用 pct_change 方法并指定 limit 参数
pct_change_limit_result = data_with_na.pct_change(limit=1)

print("使用 limit 参数的结果:")
print(pct_change_limit_result)
输出结果:
使用 limit 参数的结果:
0     NaN
1    1.00
2    0.00
3    1.00
4    0.25
dtype: float64

在这个例子中,pct_change 方法计算了 Series 数据的百分比变化,并使用 limit=1 来限制填充时可以使用的最大连续缺失值数量。这意味着只会填充一个连续的缺失值,超过这个数量的缺失值将保持为 NaN。具体来说:

  • 第二个元素 (2) 相对于第一个元素 (1) 的变化率为 (2-1)/1 = 1.0 或 100%。
  • 第三个元素 (None) 被后面的非缺失值 (4) 填充,因此相对于第二个元素 (2) 的变化率为 (4-2)/2 = 0.5 或 50%。
  • 第四个元素 (4) 相对于第三个元素 (4) 的变化率为 (4-4)/4 = 0.0 或 0%,但由于它是通过填充得到的,所以实际显示为 0.5。
  • 第五个元素 (5) 相对于第四个元素 (4) 的变化率为 (5-4)/4 = 0.25 或 25%。
示例 5:使用 freq 参数
import pandas as pd

# 创建一个带有日期索引的 Series
dates = pd.date_range('2023-01-01', periods=5)
data_dates = pd.Series([1, 2, 4, 7, 11], index=dates)

# 使用 pct_change 方法并指定 freq 参数
pct_change_freq_result = data_dates.pct_change(freq='D')

print("使用 freq 参数的结果:")
print(pct_change_freq_result)
输出结果:
使用 freq 参数的结果:
2023-01-01         NaN
2023-01-02    1.000000
2023-01-03    1.000000
2023-01-04    0.750000
2023-01-05    0.571429
Freq: D, dtype: float64

在这个例子中,pct_change 方法计算了 Series 数据的百分比变化,并使用 freq='D' 来指定按日频率计算变化。这确保了即使数据中有缺失日期,也会按照每天的频率进行计算。输出结果与不使用 freq 参数的情况相同,因为这里的数据是连续的每日数据。

总结
  • pandas.Series.pct_change 方法用于计算 Series 中元素与前一个元素之间的百分比变化。
  • periods 参数指定要比较的前后元素的数量,默认为 1。
  • fill_method 参数指定如何处理缺失值,默认为 ‘pad’ 或 ‘ffill’。
  • limit 参数限制填充时可以使用的最大连续缺失值数量。
  • freq 参数指定用于计算变化的时间频率。

通过这些示例可以看到,pct_change 方法能够帮助我们快速计算数据之间的百分比变化,特别适用于时间序列数据分析和变化趋势的检测。

你可能感兴趣的:(Pandas,Series,pandas,前端,数据库)