title: Scipy FFT Frequency Analysis of very noisy signal
body: <p>I have noisy <a href="https://www.dropbox.com/s/3hdaej7io32vycb/signal.xlsx?dl=0" rel="noreferrer">data</a> for which I want to calculate frequency and amplitude. The samples were collected every 1/100th sec. From trends, I believe frequency to be ~ 0.3</p>
  
  <p><img src="https://i.stack.imgur.com/p7gcm.png" alt="enter image description here"></p>
  
  <p>When I use <code>numpy</code> <code>fft</code> module, I end up getting very high frequency (36.32 /sec) which is clearly not correct. I tried to filter the data with <code>pandas</code> <code>rolling_mean</code> to remove the noise before fft, but that too didn't work.</p>
  
  <pre><code>import pandas as pd
  from numpy import fft
  import numpy as np
  import matplotlib.pyplot as plt
  
  Moisture_mean_x = pd.read_excel("signal.xlsx", header = None)
  Moisture_mean_x = pd.rolling_mean(Moisture_mean_x, 10) # doesn't helps
  Moisture_mean_x = Moisture_mean_x.dropna()
  Moisture_mean_x = Moisture_mean_x -Moisture_mean_x.mean()
  frate = 100. #/sec           
  Hn = fft.fft(Moisture_mean_x)
  freqs = fft.fftfreq(len(Hn), 1/frate)
  idx = np.argmax(np.abs(Hn))
  freq_in_hertz = freqs[idx]
  </code></pre>
  
  <p>Can someone guide me how to fix this?</p>