标签:Python,pandas
有时候,我们想要计算数据框架中行之间的差,可以使用dataframe.diff()方法,而不遍历行。
对于Excel用户来说,很容易使用循环来计算行之间的差异,因为在Excel中就是这样做的。然而,pandas提供了一个简单得多的解决方案。
我们将使用下面的示例数据框架进行演示。假设有两种股票的价格:SPY和TSLA。
import pandas as pd
df= pd.DataFrame({'SPY':[400,405,420,450,500],
'TSLA':[200,400,800,700,1000]},
index=pd.date_range("2022-04-18","2022-04-22"))
结果如下图1所示。
图1
pandas diff()语法
DataFrame.diff(periods= 1,
axis = 0)
在pandas数据框架中计算行之间的差异
可以无须遍历行而计算出股票的日差价。参数periods控制要移动的小数点,以计算行之间的差异,默认值为1。
下面的示例计算股票价格的日差价。第一行是NaN,因为之前没有要计算的值。从第二行开始,它基本上从原始数据框架的第二行获取值,然后减去原始数据框架第一行的值。例如405-400=5,400-200=200。
图2
对于相同的推理,我们可以通过将periods设置为负数来向后计算行之间的差异。这非常方便,因为我们不必颠倒数据的顺序。
图3
还可以通过将periods设置为1以外的数字来计算非连续行之间的差异。
图4
为了帮助可视化上述示例,可以先将列向下移动两行,然后执行减法。下面的代码复制了上面的diff(periods=2)。
图5
计算两列之间的差
还可以通过将axis参数设置为1(或“columns”)来计算数据框架中各列之间的差异。pandas中的axis参数通常具有默认值0(即行)。
图6
注:本文学习整理自pythoninoffice.com。