我在一个包含8个电极的传感器上做了一个实验。上图是电极输出随时间变化的曲线图。正如您在图中看到的,8个电极中的一个明显是异常值(可能是由于某些电气故障)。该图是由Pandas DataFrame生成的,它基本上有10列(1列表示时间,8列表示电极,1列平均8个电极)。
在统计上检测某一列是否为异常值的最佳方法是什么?我想可以将离群列从数据帧中删除。
谢谢!
发布于 2018-01-04 10:05:34
散点图或分布图对于指出异常值很有帮助。但在熊猫数据帧问题的上下文中,我将如何做到这一点。
df.decribe()
将为您提供一个很好的均值、最大值和所有百分位数的矩阵。查看列的最大值,以指出其值大于75百分位数的异常值。
然后,df['Sensor Value'].value_counts()应该会给出这些值的频率。您将在此处显示具有较大值和较低频率的异常值。
获取它们的索引,然后使用df.drop(indexes_list, inplace=True)删除它们
编辑:你也可以用mean +/- 3 * standard deviation检查异常值。
示例代码:
outliers = df[df[col] > df[col].mean() + 3 * df[col].std()]https://stackoverflow.com/questions/48087534
复制相似问题