【Pandas】pandas DataFrame pct_change

Pandas2.2 DataFrame

Computations descriptive stats

方法描述
DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值
DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 True
DataFrame.any(*[, axis, bool_only, skipna])用于判断 DataFrame 中是否至少有一个元素在指定轴上为 True
DataFrame.clip([lower, upper, axis, inplace])用于截断(限制)DataFrame 中的数值
DataFrame.corr([method, min_periods, …])用于计算 DataFrame 中各列之间的相关系数矩阵(Correlation Matrix)
DataFrame.corrwith(other[, axis, drop, …])用于计算当前 DataFrame 的每一列(或行)与另一个 Series 或 DataFrame 中对应列的相关系数
DataFrame.count([axis, numeric_only])用于统计 DataFrame 中每列或每行的非空(非 NaN)元素数量
DataFrame.cov([min_periods, ddof, numeric_only])用于计算 DataFrame 中每对列之间的协方差
DataFrame.cummax([axis, skipna])用于计算 DataFrame 中每列或每行的累计最大值(cumulative maximum)
DataFrame.cummin([axis, skipna])用于计算 DataFrame 中每列或每行的累计最小值(cumulative minimum)
DataFrame.cumprod([axis, skipna])用于计算 DataFrame 中每列或每行的累计乘积(cumulative product)
DataFrame.cumsum([axis, skipna])用于计算 DataFrame 中每列或每行的累计和(cumulative sum)
DataFrame.describe([percentiles, include, …])用于快速生成数据集的统计摘要(summary statistics)
DataFrame.diff([periods, axis])用于计算 DataFrame 中相邻行或列之间的差值(差分)
DataFrame.eval(expr, *[, inplace])用于在 DataFrame 上下文中高效地执行字符串形式的表达式运算
DataFrame.kurt([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的峰度(Kurtosis)
DataFrame.kurtosis([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的峰度(Kurtosis)
DataFrame.max([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的最大值(maximum)
DataFrame.mean([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的平均值(mean)
DataFrame.median([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的中位数(median)
DataFrame.min([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的最小值(minimum)
DataFrame.mode([axis, numeric_only, dropna])用于查找 众数(出现频率最高的值) 的方法
DataFrame.pct_change([periods, fill_method, …])用于计算 百分比变化 的方法

pandas.DataFrame.pct_change()

pandas.DataFrame.pct_change() 是 Pandas 中用于计算 百分比变化 的方法,通常用于时间序列数据或面板数据中的增长率分析。它返回一个新的 DataFrame,表示当前元素与先前元素之间的百分比变化。


语法
DataFrame.pct_change(periods=1, fill_method='pad', limit=None, freq=None, **kwargs)

参数说明
参数类型默认值描述
periodsint1计算变化的间隔(向前看几个周期)
fill_methodstr'pad'填充缺失值的方法:
- 'pad' / 'ffill': 向前填充
- 'bfill' / 'backfill': 向后填充
- None: 不填充
limitintNone填充的最大连续 NaN 数量
freqDateOffset, timedelta, 或 strNone如果是时间序列数据,可以指定频率(如 'D', 'M' 等)
**kwargsdict其他可选参数

返回值
  • 返回一个与原 DataFrame 形状相同的 DataFrame,表示每个元素相对于前 periods 个元素的百分比变化。
  • n 行的值为:(current / previous) - 1
  • 初始 periods 行会是 NaN,因为没有足够的历史数据进行比较。

示例
示例数据:
import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30, 40],
    'B': [100, 150, 200, 250]
})

输出原始数据:

    A    B
0  10  100
1  20  150
2  30  200
3  40  250

示例 1:默认参数(计算相邻行的百分比变化)
df.pct_change()

结果:

          A         B
0       NaN       NaN
1  1.000000  0.500000
2  0.500000  0.333333
3  0.333333  0.250000

解释:

  • 第一行无法计算变化,因此为 NaN
  • 第二行 A: (20/10)-1 = 1.0,B: (150/100)-1 = 0.5

示例 2:设置 periods=2(与两行前的数据对比)
df.pct_change(periods=2)

结果:

          A         B
0       NaN       NaN
1       NaN       NaN
2  2.000000  1.000000
3  1.000000  0.666667

解释:

  • 第三行 A: (30/10)-1 = 2.0,B: (200/100)-1 = 1.0
  • 前两行无法计算,因此为 NaN

示例 3:使用 fill_method 填充 NaN
df.pct_change(fill_method='bfill')

结果:

          A         B
0  1.000000  0.500000
1  1.000000  0.500000
2  0.500000  0.333333
3  0.333333  0.250000

解释:

  • 使用 bfill 填充第一个 NaN 行(向后填充)

注意事项
  • pct_change() 常用于金融数据分析、增长率分析等场景。
  • 支持处理 NaN 值(通过 fill_method 控制是否填充)。
  • 可结合 resample()rolling() 实现更复杂的时序分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuweidong0802

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值