【发布时间】:2021-07-27 17:37:02
【问题描述】:
def outliers(column, creditCardData):
creditCardData[column].describe()
zscore = (creditCardData[column] -
creditCardData[column].mean())/creditCardData[column].std()
no_of_out = sum(zscore > 3)
print('No of outliers: ', no_of_out)
upper_f = creditCardData[column].mean() + 3*creditCardData[column].std()
lower_f = creditCardData[column].mean() - 3*creditCardData[column].std()
no_of_out_up = sum(creditCardData[column]>upper_f)
no_of_out_lo = sum(creditCardData[column]<lower_f)
print('Removing outliers____________')
creditCardData[column][creditCardData[column]>upper_f] = upper_f
creditCardData[column][creditCardData[column]<lower_f] = lower_f
no_of_out_up = sum(creditCardData[column]>upper)
no_of_out_lo = sum(creditCardData[column]<lower)
print('Null values: ', creditCardData[column].isnull().sum())
outliers('PURCHASES', creditCardData)
outliers('ONEOFF_PURCHASES',creditCardData)
No of outliers: 422
Removing outliers____________
Null values: 0
<ipython-input-137-83ef36d41cf4>:15: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
异常值没有被替换。谁可以帮我这个事?使用 z score 方法构建了一个用于检测特征中的异常值的函数,并尝试通过将异常值替换为上限来解决该问题。我无法实现此功能的输出。那么,你能帮我解决这个问题吗?对于 z 分数检测阈值,上限为 3,下限为 -3。建立在数据集 CreditCardData 帮助我或指导我解决我在这里面临的问题!
【问题讨论】:
-
您能否提供一个数据示例,以及您的预期结果?
-
构建了一个函数,用于使用 z score 方法检测特征中的异常值,并尝试通过将异常值替换为上限来解决问题。我无法实现此功能的输出。那么,你能帮我解决这个问题吗? z 分数检测阈值上限为 3,下限为 -3。
-
这不能解决您使用 .loc 提供的输出
-
输出已粘贴异常值('ONEOFF_PURCHASES',creditCardData) 异常值数:422 删除异常值____________空值:0
标签: python pandas function spyder detection