首页 > 解决方案 > 如何根据组将值归入异常单元格?

问题描述

我有一个带有一些值的熊猫数据框

#| X | Y | Value1 | Value2 |
---------------------------
1| 2 | 4 |   10   |   3    |
2| 2 | 4 |    3   |   2    |
3| 2 | 4 |    1   |   4    |
4| 4 | 5 |    5   |   20   |
5| 4 | 5 |    3   |   2    |
6| 5 | 6 |    1   |   2    |
7| 4 | 5 |    4   |   3    |
----------------------------

目标是为 Value1 和 Value2 列估算相似组的值(基于 X、Y 值)。

例如 X=2,Y=4 的值为 1, 3, 10 的值为 1。使用中值插补我想用 3 替换 10,因为 3 是中值。同样,对于 X=4、Y=5,Value2 列的值为 2、3、20。我想用中位数 3 替换 20。

注意:这里将 10 和 20 视为异常值。

标签: python-3.xpandasscikit-learn

解决方案


使用来自 n1k31t4 的以下答案:https ://datascience.stackexchange.com/questions/37717/imputation-missing-values-other-than-using-mean-median-in-python 我能够解决我的问题。

df[col]=df.groupby(['X', 'Y'])[col].transform(lambda x: x.median() if (np.abs(x)>3).any() else x)

推荐阅读