pandas-Werte durch NaN nach Schwellwert ersetzen

English Deutsch

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:

pandas_replace_by_nan.py
import numpy as np

df["x"][df["x"] < -0.75] = np.nan

Beispielsweise kann dies auf den TechOverflow-pandas-Zeitreihen-Beispieldatensatz angewendet werden. Der ursprüngliche Datensatz hat zwei Spalten: Sine und Cosine und sieht so aus:

Original pandas-Zeitreihen-Plot mit Sinus- und Kosinusspalten

Nach Ausführen von

pandas_replace_sine_by_nan.py
df["Sine"][df["Sine"] < -0.75] = np.nan

ist zu sehen, dass alle Sine-Werte unter 0,75 im Plot weggelassen wurden, aber alle Werte der Cosine-Spalte unverändert bleiben:

pandas-Zeitreihen-Plot mit Sinuswerten unter Schwellwert durch NaN ersetzt

Vollständiger Beispielcode:

pandas_timeseries_complete_example.py
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:

pandas_timeseries_filtered.py
df[df < -0.75] = np.nan
df.plot()
plt.savefig("TimeSeries-NaN.svg")

Check out similar posts by category: Data Science, Pandas, Python