stats.zscore是否可以替代以检测少于10行的数据框中的异常值?

问题描述 投票:1回答:1

我正在尝试找到一种方法,将设计用于大数据帧的算法应用于非常小的数据帧,因为该想法是从无线传感器动态接收每一行数据,并且它仅适用于2个数据帧或3行。

我遇到的一个问题是,我在算法中使用的异常值检测方法似乎不适用于行数少于10的数据帧。

我正在使用的数据来自具有三列的.xlsx文件:“ ID”,“ Temperature”和“ Date”。我应用于算法的离群值测试是中值绝对偏差:

dfn=df[(np.abs(stats.zscore(df['Temperature']))<4)]

尝试将算法用于9行数据时获得的错误消息如下:

/home/.../scipy/stats/stats.py:2419: RuntimeWarning: invalid value encountered in true_divide
 return (a - mns) / sstd
Metodo3in.py:20: RuntimeWarning: invalid value encountered in less

然后代码仍然执行,但是我得到:

Empty DataFrame
Columns: [ID,Temperature,Date]
Index:[]

问题

  • 为什么stats.zscore起作用的最小数据行数是10?
  • 是否有其他选择可应用于较小的数据框?降低精度是一种选择。

任何帮助将不胜感激!

python pandas dataframe outliers
1个回答
0
投票

stats.zscore适用于任何长度大于1的输入数据。当所有温度均相等时,就会发生此问题。在这种情况下,zscore的结果全部为np.nan,这导致空结果数据帧,因为与nan的任何比较都会得出False

© www.soinside.com 2019 - 2024. All rights reserved.