宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

自定义的两个函数

定义一个对每一个特征(每一列)进行进行处理的函数,返回数值落在在(μ-3σ,μ+3σ)之外的行索引。只要有一个特征落在范围之外,则这一条样本被删除。

def three_sigma(Ser1): ”’ Ser1:表示传入DataFrame的某一列。 ”’ rule = (Ser1.mean()-3*Ser1.std()>Ser1) | (Ser1.mean()+3*Ser1.std()< Ser1) index = np.arange(Ser1.shape[0])[rule] return index #返回落在3sigma之外的行索引值

对DataFrame的每一列分别调用three_sigma函数,删除有特征值落在(μ-3σ,μ+3σ)之外的所有样本。

def delete_out3sigma(data):”’data:待检测的DataFrame”’ out_index = [] #保存要删除的行索引 for i in range(data.shape[1]): # 对每一列分别用3sigma原则处理 index = three_sigma(data.iloc[:,i]) out_index += index.tolist() delete_ = list(set(out_index)) print(‘所删除的行索引为:’,delete_) data.drop(delete_,inplace=True) return data