当前位置: 首页 > 知识库问答 >
问题:

Pandas数据帧中异常点的检测与排除

万知
2023-03-14

我有一个很少列的熊猫数据帧。

现在我知道某些行是基于某个列值的离群值。

例如:

列“vol”具有12xx附近的所有值,其中一个值为4000(离群值)。

现在,我想排除那些具有vol列的行,如下所示。

所以,本质上我需要在数据帧上放一个过滤器,这样我们就可以选择某一列的值在均值的3个标准差范围内的所有行。

什么是一个优雅的方法来实现这一点?

共有1个答案

蓟安歌
2023-03-14

如果您的dataframe中有多个列,并且希望删除至少一列中有离群值的所有行,下面的表达式将一次执行此操作。

df = pd.DataFrame(np.random.randn(100, 3))

from scipy import stats
df[(np.abs(stats.zscore(df)) < 3).all(axis=1)]

描述:

  • 对于每一列,它首先计算列中每个值相对于列均值和标准差的Z分数。
  • 只有在方向低于阈值时,它才会取绝对Z分数,因为方向不重要。
  • all(Axis=1)确保每一行的所有列都满足约束。
  • 最后,此条件的结果用于索引数据帧。
  • 指定zscore的列,例如df[0]并删除.all(axis=1)
df[(np.abs(stats.zscore(df[0])) < 3)]
 类似资料:
  • 我有一个熊猫数据框,只有几栏。 现在我知道某些行是基于特定列值的异常值。 举个例子 列Vol包含12xx周围的所有值,其中一个值是4000(异常值)。 现在,我想排除那些像这样有列的行。 所以,本质上我需要在数据框上放置一个过滤器,这样我们就可以选择所有行,其中某一列的值在,比如说,平均值的3个标准偏差之内。 实现这一点的优雅方式是什么?

  • 问题内容: 我有一个只有几列的熊猫数据框。 现在我知道某些行是基于某个列值的离群值。 例如 “ Vol”列的所有值都在周围,12xx而一个值是4000(离群值)。 现在,我想排除具有Vol此类列的行。 因此,从本质上讲,我需要在数据帧上放置一个过滤器,以便我们选择某一列的值在均值例如3个标准差以内的所有行。 有什么优雅的方法可以做到这一点? 问题答案: 如果你的数据框中有多个列,并且希望删除至少一

  • 异常检测与处理 [MCE] mce=off 彻底禁用MCE(CONFIG_X86_MCE) [MCE] mce=dont_log_ce 不为已纠正错误(corrected error)记录日志。 [MCE] mce=容错级别[,超时] 容错级别(还可通过sysfs设置): 0 在出现未能纠正的错误时panic,记录所有已纠正的错误 1(默认值) 在出现未能纠正的错误时panic或SIGBUS,记录

  • 有没有一种方法可以将下面的两个数据流连接起来,这样: 我将有一个带有标题的新数据帧: 时间戳调整的关闭reportedEPS estimatedEPS 并且reportedEPS和estimatedEPS将根据以下值保持不变: 时间戳:1月1日至3月31日,4月1日至6月30日,7月1日至9月30日,10月1日至12月31日? 2个数据流: https://gyazo.com/38B50A3D7E

  • 背景: 下面的函数使用一个熊猫数据帧,并将其重命名为,同时对其应用2x条件。 功能: 我的问题: 虽然我的代码工作正常,但我想知道是否有一种简单且更有说服力的方法可以将2x条件应用于DataFrame并重新保存它?目前,我只是重新保存了两次,这似乎相当混乱。或者也许我错了,这是将条件应用到DataFrame的正确方法?