你是否遇到过这种情况:有一串数据,你想知道每两个相邻的数据之间的差值是多少?比如你记录了每天的气温,想看看今天和昨天的温差有多大。这时候,pandas.diff() 这个方法就派上用场了。
diff()方法可以计算出相邻数据之间的差值,让你一目了然地看出数据的变化趋势。它有以下几个常见用途:
分析时间序列数据的变化情况。比如股票价格的日线走势,通过计算相邻两天的价差,就能更清楚地观察到价格的涨跌幅度。
计算变量值在相邻时间点或索引点之间的变化量和变化率,方便你追踪变量的走势。
检测异常值。如果一个数据与前后数据相差很大,很可能是个异常值或错误数据,diff()可以帮你快速发现。
总之,diff()就像给你的数据套上了"变化显示镜",让数据的走势和变化在你眼前一目了然。无论是做数据分析还是简单查看变化趋势,它都是一个好帮手。这是 pandas 快速上手系列的第 7 篇文章,希望对你有帮助。
语法:
代码语言:javascript复制df.diff(periods = N, axis = 0)
参数说明:
periods=1
代码语言:javascript复制计算与上/下几行之间的差值, 默认为1 (对相邻元素计算差分)。
如果是正值n, 表示当前元素与n行之前的元素的差分。
如果是负值-n, 表示当前元素与n行之后的元素的差分。
axis=0
代码语言:javascript复制计算差分的轴, 0 表示计算行与行之间的差分(通过索引标签沿轴向对齐),
1表示计算列与列之间的差分。
示例:
代码语言:javascript复制import pandas as pd
In [37]: df = pd.DataFrame({'A': [1, 3, 6, 10, 15],
'B': [1, 4, 9, 16, 25]})
In [38]: df
Out[38]:
A B
0 1 1
1 3 4
2 6 9
3 10 16
4 15 25
结果输出:
代码语言:javascript复制# 因为头 N 行没有之前 N 期的数据,因此这 N 行的结果将被标记为NaN
In [35]: df.diff(periods=1)
Out[35]:
A B
0 NaN NaN
1 2.0 3.0
2 3.0 5.0
3 4.0 7.0
4 5.0 9.0
In [36]: df.diff(periods=2)
Out[36]:
A B
0 NaN NaN
1 NaN NaN
2 5.0 8.0
3 7.0 12.0
4 9.0 16.0