我有2个使用pandas构建的数据帧。如果你看下面的图表,你会发现我的两个数据框都遵循几乎相同的数据模式。当我的数据超出某个参数时,我想让熊猫告诉我。例如:假设我想知道在x轴上的数据在y轴上是否低于2或高于4。我知道我可以使用标准偏差曲线来消除异常值,并且我还可以将异常值打印到excel文件中。但这不适用于这些数据我不想删除任何数据,我只想知道所有异常值所在的位置。我曾尝试创建一个像df4[(df4 < 2) | (df4 > 4)]
这样的布尔索引,但这只会删除低于2和高于4的数据值。我的问题是:如何设置我自己的参数来确定使用pandas的异常值而不删除数据?
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()
答案 0 :(得分:0)
你实际上已经做过了。执行df4[(df4 < 2) | (df4 > 4)]
时,它不会“擦除”数据,它只显示满足条件的记录,换句话说,您只看到数据帧的子集。如果您想查看整个数据框,只需添加一个新列:
df['outlier'] = (df4['Data'] < 2) | (df4['Data'] > 4)
然后,您只需df
即可看到整个数据框,而outlier
列将是True
的异常值。如果您只想查看异常值:df[df.outlier]
或非异常值:df[~df.outlier]
。同样,您甚至可以使用异常值列作为颜色的指示,对绘图中的异常值进行颜色编码。