【代码模版】数据异常值处理方法总结(持续更新···)

异常值的处理需要考虑业务情景,不同的业务情景对异常值的定义及处理方式不同

初步利用数据描述的转置查看连续型数据的情况

# 转置只是为了更加便于观看
DataFrame.describe().T

显示某个连续型特征标准分的绝对值是大于3的数据信息(一般认为是异常值)

# create std_score
std_score = (DataFrame['column_name'] - DataFrame['column_name'].mean())/DataFrame['column_name'].std()
# show detail information of DataFrame whose std_score.abs() > 3
DataFrame[std_score.abs()>3]
# find index
del_index = DataFrame[std_score.abs()>3].index
# drop those by index
DataFrame.drop(del_index,inplace=True)

在特定业务背景下,若A列特征的值大于B列特征的值,则为异常值

# 查看异常值具体信息
DataFrame[DataFrame['columnA'] > DataFrame['columnB']]
# 确定索引
del_index = DataFrame[DataFrame['columnA'] > DataFrame['columnB']].index
# 删除异常值
DataFrame.drop(del_index,inplace=True)

合并多个异常值判断条件结果

# 合并多个异常值判断条件所得到的DataFrame
pd.concat([DataFrame[std_score.abs()>3], DataFrame[DataFrame['columnA'] > DataFrame['columnB']]])
# 确定索引
del_index = pd.concat([DataFrame[std_score.abs()>3], DataFrame[DataFrame['columnA'] > DataFrame['columnB']]]).index
# 删除
DataFrame.drop(del_index,inplace=True)
上一篇:redis基本数据类型总结


下一篇:析构方法__del__