数据框列的曲线下面积

Area under curve of a dataframe column

我正在尝试计算从第一行到当前行的数据帧值的累积 AUC。

例如:

points AUC
0 0 0
1 1 0.5
2 2 1
3 3 4.5
4 4 8
5 5 12.5
6 4 17
7 0 19
8 -2 18
9 -2 16

我可以使用 np.trapz() 但我必须通过 for 循环逐行计算它。

for i in df.index:
    row={"AUC" : trapz(df["points"].iloc[:i])}
    df["AUC"].iloc[i]=row

有什么方法可以在不使用 for 循环的情况下将其应用于整列?

第二个问题是我的数据帧每分钟更新一次,所以我要么必须从 df 开始计算这个累积 AUC,这使得计算时间越来越长,要么选择 df 的一部分(例如:df.tail(25)) 并对其应用一个函数,通过这样做我将失去计算 iloc[-25].

之前曲线的 AUC

我会尝试这样的事情:

np.cumsum(df.points)-np.concatenate(([0], np.cumsum(np.diff(df.points)/2)), axis=0)

这是一个工作示例:https://abstra.show/dezL0ASX4s