问题描述
我正在处理一个包含多列的大型数据集(> 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 分数上。它们唯一的共同点是它们的出现接近于零。从视觉上看,很容易将异常值与其他值区分开来,但我如何自动做到这一点?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)