2
パンダ:極小-極大に基づくデータのジグザグ分割
時系列データがあります。データを生成する date_rng = pd.date_range('2019-01-01', freq='s', periods=400) df = pd.DataFrame(np.random.lognormal(.005, .5,size=(len(date_rng), 3)), columns=['data1', 'data2', 'data3'], index= date_rng) s = df['data1'] 極大値と極小値を結ぶジグザグ線を作成します。これは|highest - lowest value|、各ジグザグ線のy軸上で、前の距離のパーセンテージ(たとえば20%)を超える必要があるという条件を満たすことです。ジグザグ線、および事前に記述された値k(1.2など) 私はこのコードを使用してローカル極値を見つけることができます: # Find peaks(max). peak_indexes = signal.argrelextrema(s.values, np.greater) peak_indexes = peak_indexes[0] # Find valleys(min). valley_indexes = signal.argrelextrema(s.values, np.less) valley_indexes = valley_indexes[0] # Merge peaks and valleys data …