【问题标题】:Create a new dataframe by removing the outliers from the column通过从列中删除异常值来创建新的数据框
【发布时间】:2021-05-13 03:48:38
【问题描述】:

我正在努力删除异常值教程,但是当这个循环不能正常工作时,我很困惑:

target = df['ConvertedComp']
mean = target.mean()
sd = target.std()
for x in target:
    z_score = (x-mean)/sd
    if np.abs(z_score) > 3:
        selected_df = df[df.ConvertedComp != x]

还有其他方法可以有效地创建没有异常值的新数据框吗?谢谢 !希望我能学到新东西。

【问题讨论】:

  • 如果我以你的代码为基础,我建议我创建一个空列表,添加以下条件,然后将该列表转换为数据框。 selected_df = []; selected_df.append(x) 还有this information 关于排除异常值。
  • 谢谢,非常感谢。

标签: python pandas dataframe outliers


【解决方案1】:

您可以尝试使用以下代码选择从ConvertedComp 列计算的z_score 小于或等于3 的行。

mask = df['ConvertedComp'].sub(df['ConvertedComp'].mean()).div(df['ConvertedComp'].std()).abs().le(3)

df = df[mask]

【讨论】:

  • 哇,我真的不熟悉如何像这样使用 sub() 和 le()。多么有趣,但它不是缺少什么吗?您必须将 df['ConvertedComp'] 中的 x 设为中位数吗?如果你不介意请解释一下
  • 抱歉 Nvm 我看到了
  • @duyquanduc 对 Series 操作的值将应用于 Series 中的每个元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 2022-08-13
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 2018-03-23
  • 1970-01-01
相关资源
最近更新 更多