如何将dtype分类变量转换为数字?

时间:2018-06-16 14:38:05

标签: python pandas

我已从agebin列创建了age列。我使用下面的agebin检查创建了pd.cut()

traindata = data.assign(age_bins =  pd.cut(data.age, 4, retbins=False,labels=range(1, 5), include_lowest=True))

data['agebin'] = traindata['age_bins']

现在,当我看到data.info时,agebin有dtype category,我希望它是数字数据,因为我在训练模型时遇到了Value错误。如何将dtype:category转换为数字。我很困惑dtype是如何分类的,因为当我看到data['agebin'].head()所有值都是1,2,3或4时,但在data.info中它显示agebin为分类。

我想将agebin从分类更改为数字dtype。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:4)

@nimrodz完美地回答了这个问题。

我只想补充一点,你为age_bins获得category dtype的原因是pd.cut的行为。

  

out:pandas.Categorical,Series或ndarray

     
      
  • 类似于数组的对象,表示每个值的相应bin   X。类型取决于标签的值。

         
        
    • 标量序列:返回系列x或a的系列   所有其他输入的pandas.Categorical。存储在其中的值是   无论序列中的类型是什么。
    •   
    • False:返回整数的ndarray。
    •   
  •   

如果设置labels=False,它将默认为age_bins返回一个整数,但它会在0处开始编号。如果需要,可以添加一个。

traindata = data.assign(age_bins =  pd.cut(data.age, 4, retbins=False, labels=False, include_lowest=True))
traindata['age_bins'] = traindata.age_bins+1

答案 1 :(得分:3)

使用import pandas as pd trainDf = pd.read_csv("drive/app/Sample/train.csv");//Here is your file

pd.to_numeric