pd.Categorical 的用法

最近在数据处理过程中遇到 pd.Categorical() 因此特地查了一下
先给出官网的链接
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Categorical.html

我们直接通过例子来学习

In [16]: st = ['a','a','b','c','c']

In [17]: ss = pd.Categorical(st)

In [18]: ss
Out[18]:
[a, a, b, c, c]
Categories (3, object): [a, b, c]

In [22]: ss.dtype
Out[22]: CategoricalDtype(categories=['a', 'b', 'c'], ordered=False)


这里就可以看到 categorical  实际上是计算一个列表型数据中的类别数,即不重复项,它返回的是一个CategoricalDtype 类型的对象,相当于在原来数据上附加上类别信息 ,
具体的类别可以通过和对应的序号可以通过  codes  和 categories 来查看:


In [23]: ss.codes
Out[23]: array([0, 0, 1, 2, 2], dtype=int8)
In [21]: ss.categories
Out[21]: Index(['a', 'b', 'c'], dtype='object')

那么在实际应用中 我们常常是结合他的 codes 属性来一起使用的 , 即
pd.Categorical( list ).codes 这样就可以直接得到原始数据的对应的序号列表,通过这样的处理可以将类别信息转化成数值信息 ,这样就可以应用到模型中去了 另外更加详细的功能参考官网。

其实看到这里 可以发现 Categorical 的功能和 之前在机器学习 数据处理部分提到的 LabelEncoder (https://blog.csdn.net/weixin_38656890/article/details/80849334)
的功能是一样的, 不过 Categorical 是对自己编码 ,而LabelEncoder 是通过通过一个样本 制成标准 然后 对其他样本编码,因而相对的更加灵活。

更新:

这里顺带提一下 factorize
在这里插入图片描述

  • 16
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值