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

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

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

    我已经创建了 agebin column from age column。我用 pd.cut()创建了 agebin check below:。

    traindata=data.assign(age_bins=pd.cut(data.age,4,retbins=false,labels=range(1,5),include_lowest=true))。
    
    数据['agebin']=traindata['age_bin']
    

    现在,当我看到data.info,然后agebinhas dtypecategory并且我希望它是数字数据,因为我在培训模型时得到了value error。如何将dtype:category转换为numeric。我很困惑dtype是如何分类的,因为当我看到data['agebin'].head().all values are 1,2,3 or 4 but in data.info it is showingagebin.as categorical.

    我想将agebin从categorical改为numerical dtype.

    =

    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时老年人具有数据类型category我希望它是数值数据,因为我在训练模型时得到了值误差。如何将dtype:category转换为numeric。我很困惑数据类型是如何分类的,因为当我看到data['agebin'].head()所有值都是1、2、3或4,但在data.info中显示老年人分类的。

    我想换衣服老年人从分类到数字数据类型。

    enter image description here

    2 回复  |  直到 6 年前
        1
  •  3
  •   nimrodz    6 年前

    使用 pd.to_numeric

    data.agebin= pd.to_numeric(data.agebin, errors='coerce')
    
        2
  •  4
  •   ALollz    6 年前

    @尼姆罗兹完美地回答了这个问题。

    我只是想补充一点,你得到 category 年龄箱的数据类型是由于 pd.cut .

    输出:熊猫。分类、系列或ndarray

    • 一个类似数组的对象,表示每个值对应的bin x.类型取决于 标签 .

      • scalars序列:返回系列x或a的系列 熊猫。所有其他输入的分类。存储在中的值为 不管序列中的类型是什么。
      • 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