如何在用PANAS替换离群值的同时用PANAS保持行的完整?

2022-04-14 00:00:00 python-3.x pandas nan outliers

问题描述

我正在处理一个非常大的文件,需要为每列消除不同的离群值。

我已经能够找到离群值并用NaN替换它们,然而,它正在将整个行变成NaN。我肯定我错过了一些简单的东西,但我似乎找不到了。

import pandas as pd
import numpy as np
pd.set_option('display.max_rows', 100000)   
pd.set_option('display.max_columns', 10)
pd.set_option('display.width', 1000)

df = pd.read_excel('example sheet.xlsx')   

df = df.replace(df.loc[df['column 2']<=0] ,np.nan)
print(df)

如何只将一个值转换为NaN而不是整行?

谢谢


解决方案

您可以执行以下操作:

df.mask(df <= 0, np.nan, axis=1)

无需迭代列。

但是,我建议您使用适当的统计数据来定义异常值,而不是<= 0

您可以使用quantilesLike:

df.mask(((df < df.quantile(0.05)) or (df > df.quantile(0.95))), np.nan, axis=1)

相关文章