pandas-Werte durch NaN nach Schwellwert ersetzen
Bei der Verarbeitung von pandas-Datensätzen müssen oft Werte über oder unter einem bestimmten Schwellwert aus einem Datensatz entfernt werden. Eine Möglichkeit, Werte aus einem Datensatz zu „entfernen“, besteht darin, sie durch NaN-Werte (Not a Number) zu ersetzen, die typischerweise als „fehlende“ Werte behandelt werden.
Beispiel: Um Werte der Spalte x in einem DataFrame df durch NaN zu ersetzen, wenn die x-Spalte < 0,75 ist, diesen Codeausschnitt verwenden:
import numpy as np
df["x"][df["x"] < -0.75] = np.nanBeispielsweise kann dies auf den TechOverflow-pandas-Zeitreihen-Beispieldatensatz angewendet werden. Der ursprüngliche Datensatz hat zwei Spalten: Sine und Cosine und sieht so aus:
Nach Ausführen von
df["Sine"][df["Sine"] < -0.75] = np.nanist zu sehen, dass alle Sine-Werte unter 0,75 im Plot weggelassen wurden, aber alle Werte der Cosine-Spalte unverändert bleiben:
Vollständiger Beispielcode:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
plt.style.use("ggplot")
# Vorgefertigten Zeitreihen-Beispieldatensatz laden
df = pd.read_csv("https://datasets.techoverflow.net/timeseries-example.csv", parse_dates=["Timestamp"])
df.set_index("Timestamp", inplace=True)
# Originaldaten plotten
df.plot()
plt.savefig("TimeSeries-Original.svg")und dies ist der Code zum Plotten des gefilterten Datensatzes:
df[df < -0.75] = np.nan
df.plot()
plt.savefig("TimeSeries-NaN.svg")