数据框列的曲线下面积
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
我正在尝试计算从第一行到当前行的数据帧值的累积 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