泰迪杯数据挖掘挑战赛—数据预处理(一)

第九届泰迪杯数据挖掘挑战赛

在这里分享一下,我参加的第九届泰迪杯数据挖掘挑战赛的一下小小的经验!!!
我们小组在这次比赛中选择的赛题是A题。
对于数据挖掘,我们小组就是那种纯属小白的,菜鸟中的菜鸟。。。。。
进入正题:
参加数据挖掘挑战赛,首先要搞清楚数据挖掘的整个过程。
数据预处理在数据挖掘中是非常非常重要的
就拿我们这次的 A题来说,题目所给的数据一共有两万多条,有360多个指标,
拿到数据首先做的就是预处理了

1.空值处理

主要是针对A题做的预处理。拿到A题数据,首先发现有很多指标是没有值的,因为我们要做的是更具已有数据,预测造假公司的情况,有的指标是空值,说明有的公司在这个指标上本身就是不存在值的,那么要做的空值处理就是给这些空指标赋值为0,如果我们随意的给这些空指标赋予其他值,可能会导致数据不准确,最后预测出来的结果会出现很大的错误。对于缺失值大于80%的,这里直接选择删除,缺失值达到80%,证明这个指标是没有很大的实际意义的

def clear80(sum):
    #删除80%空值的列
    #复制一个sum_C,避免破坏原数据,True表示复制,Flase表示引用
    sum_C2=sum.copy(deep=True)
    #sum.shape[1]为列数,sum.shape[0]为行数
    col=copy.copy(sum_C2.shape[1])
    row=copy.copy(sum_C2.shape[0])
    for i in range(col):
        count=0
        for j in range(row):
            if pd.notnull(sum_C2.at[j,sum_C2.columns[i]]):
                count=count+1
        if (count/row)<0.2:
            sum_C2.iloc[:,i] = 0
    i=0
    while i<col:
        if sum_C2.iloc[:,i].sum(axis=0) == 0:
    #        print("已删除 ",end=' ')
    #        print(sum_C2.columns[i])
            sum_C2=sum_C2.drop(columns=[sum_C2.columns[i]])
            i=i-1#i--是因为sum_C也删除了一列,如果不i--则会漏一列没监测是否有80%数据
            col=col-1#总列数-1
        i+=1
    sum_C2=sum_C2.drop(columns=['REPORT_TYPE','FISCAL_PERIOD','MERGED_FLAG','ACCOUTING_STANDARDS','CURRENCY_CD'])    
    #sum_C2=sum_C2.drop(columns=['报告类型','会计区间','合并标志:1-合并,2-母公司','会计准则','货币代码'])
    print("有效数值少于80%的列已删除完毕...")
    #填充nan值,二选一
        #按列均值
    #sum_C2=sum_C2.fillna(sum_C2.mean())
        #填0
    sum_CC=sum_C2.iloc[:,:-1].fillna(0)
    sum_CC=sum_CC.join(sum_C2.iloc[:,-1])
    
    print("均值填充完毕...")
    return sum_CC

2.去量纲化

控制处理完毕之后,接下来就是去量纲化了。对于不同的指标,单位是不一样的,有的指标的单位是元,有的指标的单位是%。对于不同单位的指标是无法进行比较。比如说有一个指标的数据是123456789元,有一个指标的数据是98%,那么这两个指标就是无法比较的,所以需要去量纲化,将所有指标的单位都去掉,进行去量纲化处理。这里直接使用sklearn 库里的数据预处理方法来做数据的去量纲化。

def standard(data):
    scaler = preprocessing.StandardScaler().fit(data)
    data_x_stand = scaler.transform(data)
    data_x_stand=pd.DataFrame(data_x_stand)
    data_x_stand.columns=data.columns.to_list()
    print("数据规范化处理完毕...")
    return data_x_stand

总结

现在只讲了数据预处理的:去空值和去量纲化,我会在接下来的文章中介绍剩余的预处理方法。。。
数据处理(二)

  • 3
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Champion.XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值