【Pandas】pandas DataFrame diff

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 中相邻行或列之间的差值(差分)

pandas.DataFrame.diff()

pandas.DataFrame.diff() 方法用于计算 DataFrame 中相邻行或列之间的差值(差分)。它常用于时间序列分析、趋势检测、数据变化监控等场景。


📌 方法签名:
DataFrame.diff(periods=1, axis=0)

🧾 参数说明:
参数类型描述
periodsint, 默认 1指定向前/向后移动的步数,正值表示当前行与前 periods 行相减,负值则相反。
axis{0/‘index’, 1/‘columns’}, 默认 0
  • 0'index':按行计算差分(默认)
  • 1'columns':按列计算差分 |

📊 返回值:

返回一个新的 DataFrame,其形状与原 DataFrame 相同,但第一组(根据 periods 大小)行或列的值为 NaN(因为没有对应的前一行/列进行差分运算)。


✅ 示例及结果:
示例1:默认参数(按行计算一阶差分)
import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 15, 25, 30],
    'B': [100, 120, 110, 130, 140]
})

print(df.diff())
输出结果:
      A     B
0   NaN   NaN
1  10.0  20.0
2  -5.0 -10.0
3  10.0  20.0
4   5.0  10.0

解释:

  • 默认 periods=1,即每行与上一行相减。
  • 第0行无前一行 → NaN

示例2:设置 periods=2(两阶差分)
print(df.diff(periods=2))
输出结果:
      A     B
0   NaN   NaN
1   NaN   NaN
2  -5.0  10.0
3  10.0  20.0
4  15.0  30.0

解释:

  • 当前行与前两行相减,因此前两行为 NaN

示例3:负 periods(未来行减当前行)
print(df.diff(periods=-1))
输出结果:
      A     B
0 -10.0 -20.0
1   5.0  10.0
2 -10.0 -20.0
3  -5.0 -10.0
4   NaN   NaN

解释:

  • 当前行与下一行相减(未来减现在),最后一行为 NaN

示例4:按列计算差分(axis=1
df_col = pd.DataFrame({
    'X': [1, 2, 3],
    'Y': [4, 5, 6],
    'Z': [7, 8, 9]
})

print(df_col.diff(axis=1))
输出结果:
     X    Y     Z
0  NaN  3.0   3.0
1  NaN  3.0   3.0
2  NaN  3.0   3.0

解释:

  • 每列与前一列相减,因此第一列 X 全为 NaN

🎯 适用场景:
场景描述
时间序列分析计算每日/每月变化量,如销售额增长、温度变化等
趋势检测分析数据上升或下降的趋势
异常检测差分后突变值可能表示异常行为
特征工程构造新的特征(如变化率、增长率)

⚠️ 注意事项:
  • 只对数值型列有效,非数值列会被忽略
  • 差分后的结果中会包含 NaN 值(无法计算的部分)
  • 支持正负 periods,可灵活控制前后方向
  • 不会影响原始 DataFrame,返回新对象

📋 总结:
特性描述
功能计算 DataFrame 的行间或列间的差分
默认行为按行计算一阶差分(periods=1
是否修改原数据否,返回新 DataFrame
适用类型数值型列(int、float)
灵活性支持任意步长和方向(periodsaxis

diff() 是一个非常实用的数据变换工具,尤其适合处理时间序列和变化监测任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

liuweidong0802

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

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

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

打赏作者

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

抵扣说明:

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

余额充值