比如:有个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)