2022年 11月 9日

Python中差分的基本原理及实现

1. 差分的含义

差分是统计学中常用的概念,统计学中的差分是指离散函数后的后一项减去前一项的差。

2. 差分的作用

差分是时间序列分析领域常用的一种处理手段,差分的目的主要是消除一些数据波动,消除数据对时间的依赖性,使得数据趋于平稳。差分变化经常用来使得结果更为直观。

一阶差分后的数据就是增量(增量亦称改变量,指的是在一段时间内,自变量取不同的值所对应的函数值之差),但有时一阶差分都未必能达到平稳,此时需要做二阶差分。

3. 基于diff()函数实现差分

一阶差分的原理:后一项减去前一项。

对于Series和DataFrame类型的数据,我们可以直接调用 diff() 函数实现差分。

3.1 Series.diff()
import numpy as np
import pandas as pd

a = pd.Series([1, 2, 3, 5, 7, 9, 15])
a_diff_1 = a.diff(periods=1)
a_diff_2 = a.diff(periods=2)

print(a_diff_1)
print(a_diff_2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输出结果如下:

# a_diff_1
0    NaN
1    1.0
2    1.0
3    2.0
4    2.0
5    2.0
6    6.0
dtype: float64

# a_diff_2
0    NaN
1    NaN
2    2.0
3    3.0
4    4.0
5    4.0
6    8.0
dtype: float64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
3.2 DataFrame.diff()
import numpy as np
import pandas as pd

b = pd.DataFrame([1, 2, 3, 5, 7, 9, 15])
b_diff_1 = a.diff(periods=1)
b_diff_2 = a.diff(periods=2)

print(b_diff_1)
print(b_diff_2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输出结果如下:

# b_diff_1
     0
0  NaN
1  1.0
2  1.0
3  2.0
4  2.0
5  2.0
6  6.0

# a_diff_2
     0
0  NaN
1  NaN
2  2.0
3  3.0
4  4.0
5  4.0
6  8.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19