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)
🧾 参数说明:
参数 | 类型 | 描述 |
---|---|---|
periods |
int, 默认 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) |
灵活性 | 支持任意步长和方向(periods 和 axis ) |
diff()
是一个非常实用的数据变换工具,尤其适合处理时间序列和变化监测任务。