Ich habe einen DataFrame für ein schnelles Fourier-transformiertes Signal.Ausreißer in einem Pandas-Datenframe mit einer rollenden Standardabweichung ermitteln
Es gibt eine Spalte für die Frequenz in Hz und eine andere Spalte für die entsprechende Amplitude.
Ich habe einen Beitrag gelesen, der vor ein paar Jahren gemacht wurde, dass Sie eine einfache boolesche Funktion verwenden können, um Ausreißer im endgültigen Datenrahmen auszuschließen oder nur einzuschließen, die über oder unter ein paar Standardabweichungen liegen.
df = pd.DataFrame({'Data':np.random.normal(size=200)}) # example dataset of normally distributed data.
df[~(np.abs(df.Data-df.Data.mean())>(3*df.Data.std()))] # or if you prefer the other way around
Das Problem ist, dass mein Signal mehr Größenordnung abfällt (bis zu 10 000 mal kleiner) mit zunehmender Frequenz bis zu 50 000 Hz. Daher kann ich keine Funktion verwenden, die nur Werte über 3 Standardabweichungen exportiert, da ich nur die "Spitzen" -Ausreißer von den ersten 50 Hz aufnehmen werde.
Gibt es eine Möglichkeit, Ausreißer in meinem Datenrahmen zu exportieren, die über 3 Rolling Standardabweichungen eines Rolling Means liegen?
Also versuche ich alle Werte, die gefiltert werden (größer als meine Mittelwert + 3SD) in eine andere Spalte in meinem Dataframe vor dem Export. Im Moment zeigen sie nur als wahr oder falsch von 'N1 ['Peaks] = (N1 [' Cell 1-1 ']> N1 [' Filter '])' Gibt es eine Möglichkeit, die Zahlen stattdessen zu bekommen? Die Spalten Zelle 1-1 und Filter sind nur Werte für meine Daten und Filter. – Jack