【发布时间】:2019-11-20 04:55:44
【问题描述】:
目前正在研究回归问题,我在模型的性能方面遇到了一些问题。为了“可能”有更好的性能,我想删除一些异常值。
问题:从包含不同类型的数据框中删除异常值。
DF 看起来像:
df.dtypes
CONTRACT_TYPE object
CONTRACT_COC object
ORIGINATION_DATE datetime64[ns]
MATURITY_DATE datetime64[ns]
ORIGINAL_TERM float64
REMAINING_TERM int64
INTEREST_RATE_INTERNAL float64
INTEREST_RATE_FUNDING float64
但是,在尝试了如下所示的代码后,没有成功,甚至没有 zscore,我正在寻求一些帮助。
# Computing IQR
Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1
df_out = df[~((df < (Q1 - 1.5 * IQR)) |(df > (Q3 + 1.5 * IQR))).any(axis=1)]
总而言之,我希望在图(散点图、箱线图)中看到更“正态”的分布,没有或有更少的异常值。
如果您需要更多信息,请不要犹豫。
【问题讨论】:
-
你能分享一些示例数据吗?
-
没有上下文,我只能建议查看
scipy.stats.zscore。它计算给定列的 z 分数(不是整个数据框,至少我不这么认为),您可以根据值(2.58 或 1.96)轻松删除异常值 -
您要从哪些列中删除异常值?我想不是日期或对象类型?
-
感谢您的快速回复!目的是删除所有表的异常值(但也许这是没有意义的)。但是,即使我只想删除数值的异常值,如何在不创建 2 个数据帧(一个使用 get_numeric,另一个使用其他类型)的情况下做到这一点。因此,在这种情况下,我必须合并它们并且数据不会位于同一位置?如果你有任何线索,请告诉我
标签: pandas jupyter-notebook numeric categorical-data outliers