我有一个大的数据帧(数百行),它以正弦运动在零附近振荡. 当我调用我的数据时,最新的数据点要么是跟踪一个峰,要么是一个谷,不能用于我的目的,因为它不是完整的峰或谷.
我需要做的是找到上一个完整的峰或谷,并将其作为单独的数据帧返回.
下面是一些说明imtry 做什么的代码.
import matplotlib.pyplot as plt
import pandas as pd
data = pd.DataFrame(
[1, 2, 3, 4, 3.7, 3.5, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -6.3, -6, -5.9, -5.3, -5, -4, -3, -2, 0, 1, 2, 4, 5, 3,
2, 1, -1, -2], columns=list('T'))
plt.plot(data)
plt.axhline(y=0.0, color='r', linestyle='-')
plt.show()
因此,由于最近的数据是负的,我需要返回圈出的区域,因为它是最近的完整山谷.
因此,在本例中,我想返回一个数据帧形式的PERVICE_VALILE
previous_valley = [-1, -2, -3, -4, -5, -6, -6.3, -6, -5.9, -5.3, -5, -4, -3, -2]
当我调用数据时,它也可能是在跟踪峰值,因此我还需要一种方法来找到最近的完整峰值
目前,我可以通过颠倒数据帧来找到我想要的数据,然后遍历它,丢弃值,直到我到达我需要的峰顶或谷地(大量循环),但我会第一个承认它不是很有效或不是非常有效,所以我希望有人能给我指个更有效的方法.
谢谢!