数据列中,缺失值的处理

我在这次学习中,学习到,缺失值类型为数值型数据,则填补中位数,类别型数据就填补众数。。

比较笨,所以我直接写了个方法先来找到每一列数据的中位数和众数。

def mode_and_median(train):
    list1=[]
    list2=[]
    list3=[]
    list4=[]
    for col in train.columns:#对每一列数据进行循环
        # print(col)
        dir = train[col].drop_duplicates()#单独列数据进行去重,大于10个的直接跳过
        if dir.size>30:
#             print("列{}为数值型数据,中位数为{}".format(col,dir.median()))
            list1.append(col)
            list2.append(dir.median())

        if dir.size<10:#对去重后数据进行保存,储存则数据在整一列数据中对数据进行匹配
            # print(dir)
            c = Counter()
            for ch in train[col]:
                c[ch] = c[ch] + 1
            list3.append(col)
            list4.append(c.most_common(1))
#             print("列{}为类别型数据,众数值为{}".format(col,c.most_common(1)))
    df1 = pd.DataFrame([list1,list2],index = ["列名", "中位数"])
    df2 = pd.DataFrame([list3,list4],index = ["列名", "众数"])
    df3 = pd.concat([df1,df2])
    return df3.T
mode_and_median(train)

输出结果:

找到了每一列数据的中位数和众数。现在我们来查看一些当前数据的缺失值个数,和缺失比例

#查看当前数据的缺失值
total = all_data.isnull().sum().sort_values(ascending = False)
percent = (all_data.isnull().sum()/all_data.isnull().count()).sort_values(ascending = False)
missing_data = pd.concat([total,percent],axis = 1,keys = ['Total','Percent'])
missing_data.head(30)

最后找到对应位置,把相应数值类型进行缺失值填补。列出两列以供参考

features['Electrical'] = features['Electrical'].fillna("SBrkr")#类别型
features['GarageArea'] = features['GarageArea'].fillna("548")#数值型

再来补充一些,今天才学到。。pandas有自带计数的函数,这部分可以不用自己写。。傻了傻了,自己还去写了个计算列数据的方法。。。。哭 。。。

features['Exterior1st']=features['Exterior1st'].fillna(features['Exterior1st'].mode()[0])

这后一部分,features['Exterior1st'].mode()[0]即是计数这一列数据,并去除第【0】,即最大的哪个数,就是我们需要寻找的众数。。(这句话的意思是,在这一列数据中,如果有缺失值,这个缺失值就填补该列的众数。)

 

好了,上面哪个也不删除了,给自己留个记性。。加油,继续学习

 

好了,谢谢观看,有空点赞。。来个大佬给我抱个大腿,指点一些我把,大佬楼下留言,小白认真学习中。。。。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值