Як замінити pandas-значення на NaN за порогом

При обробці pandas-датасетів часто вам потрібно видалити значення вище або нижче заданого порогу з датасету. Один спосіб “видалити” значення з датасету — замінити їх на NaN (not a number) значення, які типово трактуються як “пропущені” значення.

Наприклад: Щоб замінити значення x-колонки на NaN, де x-колонка є < 0.75 у DataFrame df, використовуйте цей фрагмент:

pandas_replace_by_nan.py
import numpy as np

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

Наприклад, ми можемо запустити це на TechOverflow pandas-прикладі датасету часового ряду. Оригінальний датасет має дві колонки: Sine та Cosine і виглядає так:

Оригінальний pandas-графік часового ряду з sine та cosine колонками

Після запуску

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

ви можете побачити, що всі Sine-значення нижче 0.75 були пропущені з графіку, але всі значення з Cosine-колонки залишилися без змін:

Pandas-графік часового ряду з sine-значеннями нижче порогу, заміненими на NaN

Повний приклад коду:

pandas_timeseries_complete_example.py
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
plt.style.use("ggplot")

# Load pre-built time series example dataset
df = pd.read_csv("https://datasets.techoverflow.net/timeseries-example.csv", parse_dates=["Timestamp"])
df.set_index("Timestamp", inplace=True)

# Plot original code
df.plot()
plt.savefig("TimeSeries-Original.svg")

і це код, щоб побудувати відфільтрований датасет:

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

Дивіться схожі статті за категоріями: Data Science Pandas Python