【数据预处理】如何将某一类别特征的极少数类别归为一类

 

比如:有个10000样本的数据集,其中某个特征是包含有很多地名的类别特征,有的地名出现了很多次,但也有很多地名只出现了一次,现在想把这些只出现了一次的地名归为一类,然后这个类别特征经过one_hot编码之后维度会大大减少,后续处理也相对容易!

废话不多说,直接上代码。。。

import pandas as pd
import numpy as np          
df = pd.DataFrame(np.array(list('abcdcbaceebcabcdacbeaabcbfnaeb')).reshape(5,6),index=range(5),columns=['a','b','c','d','地名','f'])         


def handle(data):
    
    # 将该特征的类别进行归类统计,返回数据类型为series,index为所有的类别,value为每个类别对应的个数
    feature_count = data['地名'].value_counts()  
    l = len(feature_count.values)
    small_list=[]  # 将样本个数只有1的类别放进列表
    for i in range(l):
        if feature_count.values[i]==1:
            small_list.append(feature_count.index[i])   # 

    
    m = len(data)
    feature_values=data['地名'].values
    for j in range(m):
        for i in small_list:
            if i==feature_values[j]:
                feature_values[j]='少数'
    data['地名']=feature_values
    return data
    
handle(df)

 

posted @ 2019-06-28 00:14  编程小虾米  阅读(575)  评论(0编辑  收藏  举报