当前位置: 首页 > news >正文

【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 pddf = 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() 是一个非常实用的数据变换工具,尤其适合处理时间序列和变化监测任务。

http://www.xdnf.cn/news/459163.html

相关文章:

  • 【Linux】gcc从源码编译安装,修改源码,验证修改的源码
  • 数据科学和机器学习的“看家兵器”——pandas模块 之三
  • undefined reference to CPUAllocatorSingleton::instance
  • EasyExcel集成使用总结与完整示例
  • 【歌曲结构】2:小节与歌曲结构信息整合
  • 【ROS2】编译Qt实现的库,然后链接该库时,报错:/usr/bin/ld: XXX undefined reference to `vtable for
  • 跨系统数据烟囱如何破局?豪森智源HSMES重构制造协同新范式‌
  • Java基础(网络编程)
  • 【软件设计师】模拟题五
  • gitlab+portainer 实现Ruoyi Vue前端CI/CD
  • 内网互通原则详解!
  • Apache HttpClient 5 用法-Java调用http服务
  • 文章复现|(1)整合scRNA-seq 和空间转录组学揭示了子宫内膜癌中 MDK-NCL 依赖性免疫抑制环境
  • duxapp 2025-01-13 更新 支持小程序配置文件
  • VisionPro斑点寻找工具Blob
  • 十、HQL:排序、联合与 CTE 高级查询
  • 2.4GHz无线芯片核心技术解析与典型应用
  • 基于策略的强化学习方法之近端策略优化(PPO)深度解析
  • 数据结构 -- 树形查找(一)二叉排序树
  • 前端上传获取excel文件后,如何读取excel文件的内容
  • 实用工具:微软软件PowerToys(完全免费),实现多台电脑共享鼠标和键盘(支持window系统)
  • 基于微信小程序的在线聊天功能实现:WebSocket通信实战
  • 代码随想录算法训练营第60期第三十七天打卡
  • Yeoman实战指南:从零打造自定义项目生成器
  • pyenv简单的Python版本管理器(macOS版)
  • P8803 [蓝桥杯 2022 国 B] 费用报销
  • V837s-LAN8720A网口phy芯片调试
  • git管理忽略指定路径/临时文件
  • GitHub 趋势日报 (2025年05月14日)
  • 时序数据库IoTDB分布式架构解析与运维指南