创建自定义参数以查找 pandas 数据框中的异常值

Create custom parameter to find outliers in pandas dataframe

我有 2 个使用 pandas 构建的数据帧。如果您查看下图,您会发现我的两个数据框都遵循几乎相同的数据模式。当我的数据超出某个参数时,我想让 pandas 告诉我。例如:假设我想知道 x 轴上的数据何时低于 2 或 y 轴上的 4。我知道我可以 pandas 使用标准偏差曲线消除异常值,我还可以将异常值打印到 excel 文件中。但这对这些数据不起作用我不想删除任何数据我只想知道所有异常值在哪里。我试过创建一个像这样的布尔索引 df4[(df4 < 2) | (df4 > 4)] 但这只会删除低于 2 和高于 4 的数据值。我的问题是:How can i set my own parameter to determine outliers using pandas without removed数据?

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn
plt.style.use("dark_background")
plt.style.use("seaborn-bright")



x4 = (e[0].time[:47172])
y4 = (e[0].data.f[:47172])

x6 = (t[0].time[:47211])
y6 = (t[0].data.f[:47211])

df4 = pd.DataFrame({'Time': x4, 'Data': y4})
df6 = pd.DataFrame({'Time': x6, 'Data': y6})
plt.xlabel('Relative Time in Seconds', fontsize=12)
plt.ylabel('Data', fontsize=12)
plt.grid(linestyle = 'dashed')

plt.plot(x4, y4)
plt.plot(x6, y6)
plt.show()

你其实已经做到了。当您执行 df4[(df4 < 2) | (df4 > 4)] 时,它不会 "erase" 数据,它仅显示满足条件的记录,换句话说,您只会看到数据框的子集。如果您想查看整个数据框,只需添加一个新列即可:

df['outlier'] = (df4['Data'] < 2) | (df4['Data'] > 4)

然后你可以简单地通过 df 查看整个数据框,并且列 outlier 将是 True 异常值。如果您只想查看异常值:df[df.outlier] 或非异常值:df[~df.outlier]。同样,您甚至可以使用离群值列作为颜色指示,对绘图上的离群值进行颜色编码。