gpt4 book ai didi

python - 针对在单个列中发现的离群值删除数据集的整行

转载 作者:行者123 更新时间:2023-12-04 16:40:31 28 4
gpt4 key购买 nike

我目前正尝试使用中值绝对偏差法从我的数据集中删除离群值。

为此,我按照@tanemaki 在Detect and exclude outliers in Pandas data frame 中给出的说明进行操作。 ,这样可以删除包含至少一个离群值的整行。

在我链接的帖子中,提出了同样的问题,但没有得到回答。

问题是我只想在单个列中搜索异常值

因此,例如,我的数据框如下所示:


Temperature Date
1 24.72 2.3
2 25.76 4.6
3 25.42 7.0
4 40.31 9.3
5 26.21 15.6
6 26.59 17.9

例如数据中有两个'异常:

  • 第[4]行的温度值
  • 第 [5] 行中的日期值

因此,我想要的是离群值函数只“注意到”温度列中的异常,并删除其对应的行。

我使用的离群值代码是:

df=pd.read_excel(r'/home/.../myfile.xlsx')
from scipy import stats
df[pd.isnull(df)]=0
dfn=df[(np.abs(stats.zscore(df))<4).all(axis=1)] #@taneski
print(dfn)

我生成的数据框目前看起来像:


Temperature Date
1 24.72 2.3
2 25.76 4.6
3 25.42 7.0
6 26.59 17.9

如果我没有传达我的信息,期望的输出将是:


Temperature Date
1 24.72 2.3
2 25.76 4.6
3 25.42 7.0
5 26.21 15.6
6 26.59 17.9

任何指针都会有很大帮助。谢谢!

最佳答案

您始终可以将 stats.zscore 操作限制在 Temperature 列而不是整个 df 上。可能像这样:

In [573]: dfn = df[(np.abs(stats.zscore(df['Temperature']))<4)]                                                                                                                                             

In [574]: dfn
Out[574]:
Temperature Date
1 24.72 2.3
2 25.76 4.6
3 25.42 7.0
5 26.21 15.6
6 26.59 17.9

关于python - 针对在单个列中发现的离群值删除数据集的整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61815114/

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