有一个包含几列数字特征的数据框。您需要将每列中的异常值替换为该列的平均值。我可以编写一个函数来在一列中替换,如下所示:
def outliers(row):
q_1 = np.quantile(num_cols['col_1'], 0.25)
q_3 = np.quantile(num_cols['col_1'], 0.75)
IQR = q_3 - q_1
if row < (q_1 - IQR * 1.5) or row > (q_3 + IQR * 1.5):
return num_cols['col_1'].mean()
else:
return row
如何正确编写它以便它适用于例如这样的代码:
for col in num_cols[['col_1', 'col_2', 'col_3']]:
num_cols[col] = num_cols.apply(outliers)
你对整个框架、列、行、列名有一些混淆。你只需要小心。该函数应该接收所有参数作为输入,并且不能与根本没有传递给它的对象一起使用。结果应该是这样的: