Depende del tipo de ruido y el tipo de señal. Muestra un ejemplo si quieres una buena respuesta. Pero, dicho eso, en general probablemente desee filtrar la señal con paso bajo. Si yo fuera usted, tomaría un espectro de potencia de Fourier para ver si la mayor parte del ruido es de alta frecuencia, y la señal que me interesa principalmente en un rango más bajo. Si se superponen, bueno, así es la vida. Tendría que pensar más en las cosas.
Un filtro de paso bajo que es bueno para la señal ruidosa en muchos casos es el filtro Savitzky-Golay. Se describe en Recetas numéricas, y para Python hay una función en Python Numpy Cookbook. Es simplemente una convolución con un núcleo pequeño. Elija el tamaño de la ventana en función del ancho de los picos u otras características, lo suficientemente ancho como para emitir el ruido, pero no más ancho que las características. Puede ser pequeño, digamos cinco puntos, o más grande como docenas, tal vez cien.
También elige un orden polinomial, generalmente uso 2 o 4. El orden 2 está bien para cuando la ventana es pequeña, <10 puntos o abarca menos de medio ciclo más o menos (si su señal se asemeja a un seno) mientras que el orden 4 es es mejor para combinar formas de pico distorsionadas, pero le gusta tener alrededor de 9 o más puntos. Pero mucho depende de la forma y frecuencia del ruido.
Como otros dicen en los comentarios, encontrar derivados probablemente no sea la mejor estrategia, pero si de todos modos desea encontrar derivados, el filtro Savitzky-Golay puede hacerlo, alisando e informando simultáneamente la derivada en lugar de la señal.