如何按阈值将 pandas 值替换为 NaN

处理 pandas 数据集时,通常需要从数据集中删除高于或低于给定阈值的值。从数据集中"删除"值的一种方法是将它们替换为 NaN(非数字)值,这些值通常被视为"缺失"值。

例如:为了在 DataFrame df 中将 x< 0.75x 列值替换为 NaN,使用此代码片段:

pandas_replace_by_nan.py
import numpy as np

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

例如,我们可以在 TechOverflow pandas 时间序列示例数据集 上运行此操作。原始数据集有两列:SineCosine,看起来像这样:

具有 sine 和 cosine 列的原始 pandas 时间序列图

运行后

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

你可以看到所有低于 0.75Sine 值已从图中省略,但 Cosine 列的所有值保持不变:

低于阈值的 sine 值替换为 NaN 的 pandas 时间序列图

完整示例代码:

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

# 加载预构建的时间序列示例数据集
df = pd.read_csv("https://datasets.techoverflow.net/timeseries-example.csv", parse_dates=["Timestamp"])
df.set_index("Timestamp", inplace=True)

# 绘制原始代码
df.plot()
plt.savefig("TimeSeries-Original.svg")

这是绘制过滤后数据集的代码:

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