gpt4 book ai didi

python - 用 Pandas 数据框中的列分位数替换异常值

转载 作者:太空狗 更新时间:2023-10-29 20:53:25 26 4
gpt4 key购买 nike

我有一个数据框:

df = pd.DataFrame(np.random.randint(0,100,size=(5, 2)), columns=list('AB'))
A B
0 92 65
1 61 97
2 17 39
3 70 47
4 56 6

这是 5% 的分位数:

down_quantiles = df.quantile(0.05)
A 24.8
B 12.6

这是低于分位数的值的掩码:

outliers_low = (df < down_quantiles)
A B
0 False False
1 False False
2 True False
3 False False
4 False True

我想将 df 中的值设置为低于其列分位数的分位数。我可以这样做:

df[outliers_low] = np.nan
df.fillna(down_quantiles, inplace=True)

A B
0 92.0 65.0
1 61.0 97.0
2 24.8 39.0
3 70.0 47.0
4 56.0 12.6

但当然应该有更优雅的方式。如果没有 fillna,我该怎么做?谢谢。

最佳答案

您可以使用 DF.mask()方法。只要存在 True 实例,其他系列的值就会通过提供 axis=1 并根据匹配的列名进行对齐替换。

df.mask(outliers_low, down_quantiles, axis=1)  

enter image description here


另一种变体是使用 DF.where()使用波浪号 (~) 符号反转 bool 掩码后的方法。

df.where(~outliers_low, down_quantiles, axis=1)

enter image description here

关于python - 用 Pandas 数据框中的列分位数替换异常值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41759993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com