当前位置: 首页 > 面试题库 >

Python-检测并排除熊猫数据框中的异常值

孙经艺
2023-03-14
问题内容

我有一个只有几列的熊猫数据框。

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

例如

“ Vol”列的所有值都在周围,12xx而一个值是4000(离群值)。

现在,我想排除具有Vol此类列的行。

因此,从本质上讲,我需要在数据帧上放置一个过滤器,以便我们选择某一列的值在均值例如3个标准差以内的所有行。

有什么优雅的方法可以做到这一点?


问题答案:

如果你的数据框中有多个列,并且希望删除至少一列中具有异常值的所有行,则以下表达式可以一口气做到这一点。

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)确保对于每一行,所有列均满足约束。
  • 最后,此条件的结果用于索引数据帧。


 类似资料:
  • 我有一个熊猫数据框,只有几栏。 现在我知道某些行是基于特定列值的异常值。 举个例子 列Vol包含12xx周围的所有值,其中一个值是4000(异常值)。 现在,我想排除那些像这样有列的行。 所以,本质上我需要在数据框上放置一个过滤器,这样我们就可以选择所有行,其中某一列的值在,比如说,平均值的3个标准偏差之内。 实现这一点的优雅方式是什么?

  • 我有一个很少列的熊猫数据帧。 现在我知道某些行是基于某个列值的离群值。 例如: 列“vol”具有附近的所有值,其中一个值为(离群值)。 现在,我想排除那些具有列的行,如下所示。 所以,本质上我需要在数据帧上放一个过滤器,这样我们就可以选择某一列的值在均值的3个标准差范围内的所有行。 什么是一个优雅的方法来实现这一点?

  • 问题内容: 我有不同的数据框,需要根据日期列将它们合并在一起。如果我只有两个数据帧,则可以使用来对三个数据帧进行操作,但是,使用多个数据帧将变得非常复杂且难以读取。 所有数据框都有一个共同的列- ,但是它们没有相同数量的行或列,而我只需要每个数据框共有每个日期的那些行。 因此,我正在尝试编写一个递归函数,该函数返回一个包含所有数据的数据框,但是它不起作用。那我应该如何合并多个数据框? 我试图dif

  • 问题内容: 我想从“ tweets”列中删除停用词。如何遍历每一行和每一项目? 问题答案: 使用列表理解 返回值:

  • 问题内容: 我有python pandas dataframe,其中一列包含月份名称。 如何使用字典进行自定义排序,例如: 问题答案: 熊猫0.15引入了“分类系列”,该分类系列提供了一种更清晰的方法: 首先,将月份列设为分类,然后指定要使用的顺序。 现在,当您对月份列进行排序时,它将相对于该列表进行排序: 注意:如果值不在列表中,它将被转换为NaN。 对于那些有兴趣的人来说,是一个较旧的答案。

  • 问题内容: 好的,我有一个(大)数据框,如下所示: 如您所见,数据框具有一列,一列,每天有四个小时(00、06、12、18)和一列。 问题在于数据框中缺少日期,在上面的示例中,第8行和第9行之间应该有两个额外的行,分别对应于小时和当天,并且在第9行和第10行之间应该有一个额外的行,对应于小时和日期。一天中的一个小时。 我需要什么? 我想对数据框的列进行迭代,检查每天是否存在并且没有人丢失,并且每天