Ich versuche, die Ergebnisse der FFT-Berechnungen in einem Pandas Datenrahmen zu speichern:merkwürdiges Problem, wenn FFT Perioden in Pandas Datenrahmen zu speichern
ft = pd.DataFrame(index=range(90))
ft['y'] = ft.index.map(lambda x: np.sin(2*x))
ft['spectrum'] = np.fft.fft(ft['y'])
ft['freq'] = np.fft.fftfreq(len(ft.index)).real
ft['T'] = ft['freq'].apply(lambda f: 1/f if f != 0 else 0)
Alles scheint bis zur letzten Zeile, adaequat zu sein: die Spalte T des soll Perioden speichern hat aus irgendeinem Grund alle Spalten des Rahmens, dh .:
In [499]: ft.T[0]
Out[499]:
y 0j
spectrum (0.913756021471+0j)
freq 0j
T 0j
Name: 0, dtype: complex128
ich kann nicht herausfinden, warum das so ist. Es kommt auch vor, wenn ich nur den Realteil von Freq nehmen:
ft['freq'] = np.fft.fftfreq(len(ft.index)).real
oder ich versuche, T-Werte unter Verwendung von alternativen Möglichkeiten, wie zu berechnen:
ft.T = ft.index.map(lambda i: 1/ft.freq[i] if ft.freq[i] else np.inf)
ft.T = 1/ft.freq
Alle anderen Spalten aussehen ordentlich, wenn ich head()
laufen oder describe()
auf sie, egal ob sie echte oder komplexe Werte enthalten. Die Freq-Spalte sieht wie eine normale 1D-Reihe aus, weil np.fft.fftfreq()
ein 1D-Array komplexer Zahlen zurückgibt. Was könnte also der Grund sein, warum die Spalte T so durcheinander ist?
Ich verwende Pandas V. 1.19.2 und Numpy v. 1.12.0.
Ich wusste, dass es etwas albern von mir sein musste :) Danke für die schnelle Antwort. – mac13k