微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pandas:检测并删除异常低值

如何解决Pandas:检测并删除异常低值

我正在处理一个包含多列的大型数据集(> 20000 行),所有列都大致正态分布(尽管有时具有重叠的正态趋势)。但是,测量方法生成大量接近零的值,这些值显然是伪影,如下面的链接图像所示:

from scipy import stats
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

data = pd.read_csv('example.csv')

fig,axes = plt.subplots(ncols=2,nrows=2,figsize=(10,4))
for ax,el in zip(axes[0],data.columns):
    sns.histplot(data[el],ax=ax)
    ax.set_xlabel(el)
for ax,el in zip(axes[1],data.columns):
    zdata = stats.zscore(data[el],axis=0,nan_policy='omit')
    sns.histplot(zdata,ax=ax)
    ax.set_xlabel(f"{el} z-score")
plt.tight_layout()

Distribution and z-scores of both data columns.

使用 Pandas 和 Numpy,我想删除这些异常的低值。通常,我会将它们视为异常值并根据 z 分数删除它们,但如上所示,它们出现在非常不同的 z 分数上。它们唯一的共同点是它们的出现接近于零。从视觉上看,很容易将异常值与其他值区分开来,但我如何自动做到这一点?

Link to data.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。