【问题标题】:Find outlier records considering in dataframe查找数据框中考虑的异常记录
【发布时间】:2021-08-20 21:55:20
【问题描述】:
我正在构建一个身体测量预测机器学习模型。
我想删除与年龄、体重和身高相关的脂肪、颈部、胸部、腹部、臀部、大腿、膝盖、脚踝、二头肌、F 型臂和手腕的异常集合的记录。
我的意思是,如果 25 岁、190 体重和 75 身高的记录在 %Fat 或 Neck 或 Chest 有一定的四分位数范围,那么这些列的所有值都应在四分位数范围内,并且任何异常值都可以替换为平均值。 this is what my dataset looks like
【问题讨论】:
标签:
python
machine-learning
statistics
data-cleaning
outliers
【解决方案1】:
我不完全确定,如果我知道你想如何清除异常值。我为一个项目编写了一个小公式,以根据给定的分位数清理数据集。这个公式的特别之处在于,它分两个阶段起作用。首先,它根据给定的百分比级别获取要清理的每列的分位数,其次,它删除所有值高于给定阈值的行。与遍历每一列相比,两步过程允许删除更少的值。代码如下:
def clean_quantiles(dataset, variables=[], frame=[0.025, 0.975]):
df = dataset.copy()
quantiles = []
for name in variables:
quantiles.append([df[name].quantile(frame[0]), df[name].quantile(frame[1])])
for i in range(0, len(variables)):
df = df[df[variables[i]].between(quantiles[i][0], quantiles[i][1])]
df.reset_index(drop=True, inplace=True)
return df
- “dataset”是您放置 pandas 数据框的位置
- “变量”应该是要检查的列列表
- “frame”包含您要排除的异常值百分比