При обработке наборов данных pandas часто нужно удалить значения выше или ниже заданного порога из набора данных. Один из способов “удалить” значения из набора данных — заменить их значениями NaN (не число), которые обычно рассматриваются как “пропущенные” значения.
Например: чтобы заменить значения столбца x на NaN, где столбец x < 0.75 в DataFrame df, используйте этот фрагмент:
import numpy as np
df["x"][df["x"] < -0.75] = np.nanНапример, мы можем запустить это на примере набора данных временного ряда TechOverflow pandas. Исходный набор данных имеет два столбца: Sine и Cosine и выглядит так:
После выполнения
df["Sine"][df["Sine"] < -0.75] = np.nanвы можете видеть, что все значения Sine ниже 0.75 были опущены из графика, но все значения из столбца Cosine остались без изменений:
Полный пример кода:
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")а это код для построения отфильтрованного набора данных:
df[df < -0.75] = np.nan
df.plot()
plt.savefig("TimeSeries-NaN.svg")