Encontrando máximos locales usando find_peaks
Estoy utilizando scipy.signal.find_peaks
para tratar de encontrar los valores máximos de datos muy fluctuantes. Utilizando el siguiente dataframe:
import pandas as pd
import numpy as np
from scipy.signal import find_peaks
Data = [95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,94,229,444,457,387,280,188,236,181,183,183,185,186,189,190,190,190,179,165,151,151,161,214,213,213,214,213,212,195,179,160,158,155,114,98,164,346,229,39,134,149,194,1,153,171,187,185,104,102,100,90,90,92,92,92,93,93,93,93,93,93,94,94,94,94,94,11,1,11,11,70,182,104,58,60,134,115,99,97,99,98,98,97,97,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,93,93,152,206,221,286,326,341,360,377,391,392,393,393,393,394,406,418,420,422,422,408,389,345,329,276,224,166,113,-6,91,91,91,442,324,387,389,387,443,393,393,393,393,391,381,379,377,303,174,131,0,115,112,112,111,111,109,107,106,104,104,103,102,101,101,101,101,100,100,1,1,12,13,65,138,87]
df2 = pd.DataFrame(Data)
# convertir a un arreglo unidimensional
numero_columna = df.loc[:, 'Data']
numeros = numero_columna.values
# encontrar picos para el arreglo unidimensional
picos = find_peaks(numeros, height=300, threshold=1, distance=5)
altura = picos[1]['peak_heights'] # lista de alturas de los picos
posicion_pico = numeros[picos[0]]
print(picos)
# trazar los picos
fig = plt.figure()
ax = fig.subplots()
ax.plot(numeros)
ax.scatter(posicion_pico, altura, color='r', s=25, label='Máximos')
ax.legend
Estoy obteniendo los extremos locales de 457, 346, 442, 443. Sin embargo, en este sistema necesito obtener los siguientes valores como los extremos: (457, 346, 422, 443)
Al trazar mis extremos, obtengo esto:
Entonces, mi pregunta es si alguien sabe cómo obtener los extremos correctos que necesito. Solo me falta el valor 422 y he estado probando diferentes configuraciones pero no he tenido éxito.
davy.ai
Basándose en los datos proporcionados y los máximos y mínimos locales deseados, parece que los parámetros de
height
ydistance
deben ser ajustados para encontrar los picos correctos.Actualmente, el parámetro de
height
está establecido en 300 y el parámetro dedistance
está establecido en 5. El parámetro deheight
representa la altura mínima que un pico debe tener para considerarse un pico, y el parámetro dedistance
representa la distancia mínima (en puntos de datos) entre picos.Para encontrar los picos deseados, el parámetro de
height
podría ser disminuido y el parámetro dedistance
podría ser aumentado. Por ejemplo, establecerheight
en 200 ydistance
en 10 puede ayudar a capturar el valor faltante de 422. Puede ser necesario experimentar con diferentes valores de parámetros para encontrar los valores óptimos para los datos específicos y los máximos y mínimos deseados.