代码之家  ›  专栏  ›  技术社区  ›  stone rock

如何将年龄分级特征替换为数值数据?

  •  1
  • stone rock  · 技术社区  · 7 年前

    我创造了 agebin 列从 age 柱。我有一系列 ages 但是我怎样才能把它们转换成 阿格宾 数值数据类型,因为我想检查 阿格宾 是不是重要的特征。

    我尝试了以下年龄分类代码:

        traindata = data.assign(age_bins =  pd.cut(data.age, 4, retbins=False, include_lowest=True))
    
        data['agebin'] = traindata['age_bins']
    
    data['agebin'].unique()
    
    [[16.954, 28.5], (28.5, 40], (40, 51.5], (51.5, 63]]
    Categories (4, object): [[16.954, 28.5] < (28.5, 40] < (40, 51.5] < (51.5, 63]]
    

    我试过的:

    data['enc_agebin'] = data.agebin.map({[16.954, 28.5]:1,(28.5, 40]:2,(40, 51.5]:3,(51.5, 63]:4})
    

    我试图映射每个范围并将其转换为数字,但出现语法错误。请推荐一些好的转换技巧 阿格宾 对数字数据是绝对的。

    1 回复  |  直到 7 年前
        1
  •  1
  •   jezrael    7 年前

    我想需要参数 labels 在里面 cut :

    data = pd.DataFrame({'age':[10,20,40,50,44,56,12,34,56]})
    
    data['agebin'] = pd.cut(data.age,bins=4,labels=range(1, 5), retbins=False,include_lowest=True)
    print (data)
       age agebin
    0   10      1
    1   20      1
    2   40      3
    3   50      4
    4   44      3
    5   56      4
    6   12      1
    7   34      3
    8   56      4
    

    或使用 labels=False ,则第一个bin是 0 最后 3 (像 range(4) ):

    data['agebin'] = pd.cut(data.age, bins=4, labels=False, retbins=False, include_lowest=True)
    print (data)
       age  agebin
    0   10       0
    1   20       0
    2   40       2
    3   50       3
    4   44       2
    5   56       3
    6   12       0
    7   34       2
    8   56       3