【问题标题】:How do i remove outliers in a datset that has both categorical and numerical data?如何删除同时具有分类数据和数值数据的数据集中的异常值?
【发布时间】:2021-01-10 23:38:32
【问题描述】:

我正在尝试从数据集中的“价格”列中删除异常值。我已经能够创建异常值的数据框及其在其他列中的相应值,但我正在努力从父数据集中排除这些条目。我该怎么办?

这是我用来创建上述新数据框的代码:

lower_limit = pq1 - 1.5 *iqr
upper_limit = pq3 + 1.5 *iqr

newdf = df[((df['price'] < lower_limit) | (df['price'] > upper_limit))]
newdf

我在指定布尔运算之前尝试使用波浪号(~),但没有得到预期的结果。

【问题讨论】:

  • 尝试 df.loc[... 而不是 df[... 并阅读有关索引的 pandas 文档

标签: python pandas data-science outliers iqr


【解决方案1】:

相反的可以是:

newdf = df[((df['price'] > lower_limit) & (df['price'] < upper_limit))]

【讨论】:

    【解决方案2】:

    您可以使用.loc 属性获取原始数据框的样本,该样本通过索引排除了newdf 数据框的元素:

    lower_limit = pq1 - 1.5 *iqr
    upper_limit = pq3 + 1.5 *iqr
    
    newdf = df[((df['price'] < lower_limit) | (df['price'] > upper_limit))]
    df_not_outliers = df.loc[set(df.index) - set(newdf.index)]
    

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 2015-12-24
      • 2023-03-11
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      相关资源
      最近更新 更多