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
pd.Categorical 的用法_第1张图片

你可能感兴趣的:(python,python函数辨析)