数据清洗常用代码

数据清洗过程中,经常需要对缺失值和异常值进行查看和处理,常用代码总结如下:

一、缺失值处理
1.1 缺失值识别

# 查看数据缺失情况
# 输入数据集
# 输出各字段缺失值的数量以及占比,并降序展示
def missing(data):
    missingSum=data.isnull().sum() #总缺失值
    missingSumPrt=100 * data.isnull().sum()/len(data)  #缺失值占比
    MissingTb1=pd.concat([missingSum,missingSumPrt],axis=1)
    MissingTb1Col=MissingTb1.rename(columns={0:"Missing Values",1:"% of Total Values"})
#     MissingRes=MissingTb1Col[MissingTb1Col.iloc[:,1]!=0].sort_values("% of Total Values",ascending=False).round(1)
    MissingRes=MissingTb1Col.sort_values("% of Total Values",ascending=False).round(1)
    return MissingRes

二、异常值处理
2.1 归一化处理

# 为避免不同特征量纲差异大,对模型准确性产生影响。需对数据归一化处理:归一化方法很多,本文采用对数化后min-max方法(归一化处理前须先对离群点进行处理)

def stdFuc(data,cols,quantile=0.99):
    #首先对数据对数化处理
    data['log']=[math.log(i+1) for i in data[cols].reset_index(drop=True).tolist()]
    Q=np.quantile(data['log'],quantile) #求指定分位点的数据
    data.loc[data['log']>Q,'log']=Q
    #归一化:采用min-max方法(需注意避免分母为零)
    if (Q-min(data['log'])>0):
        std=(data['log']-min(data['log']))/(Q-min(data['log']))
    else:
        std=data['log']+1-data['log'] #注意:std=1 和std=data['log']+1-data['log']不同,后者为向量。
    return std

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值