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 (将#修改为@)