Pandas pd.Categorical()函数

pandas.Categorical(values,
                   categories = None,
                   ordered = None,
                   dtype = Nonel
                   fastpath = False 
                  )

参数:

  • values:类似列表。分类的值,如果给出了类别,则不在类别中的值将替换为NaN。
  • categories:索引式(唯一),可选。此分类的唯一类别。如果没有给出,则假定类别是值的唯一值。
  • ordered:布尔值,(默认为False)。这个分类是否被当作一个有序的分类。如果为True,产生的分类将是有序的。有序分类在排序时尊重其类别属性的顺序(如果提供了类别参数,则该属性也是类别参数
  • dtype:CategoricalDtype,CategoricalDtype用于此分类的实例

示例

import pandas as pd
cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
cat

结果 :

[a, b, c, a, b, c]
Categories (3, object): [a, b, c]
  • 参数 categories=
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], 
                         categories=['c', 'b', 'a'])
print (cat)

结果

[a, b, c, a, b, c, NaN]
Categories (3, object): [c, b, a]

在类别中不存在的任何值将被视为NaN

  • 参数 ordered
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], 
                         categories=['c', 'b', 'a'],
                         ordered=True)
print (cat)

结果:

[a, b, c, a, b, c, NaN]
Categories (3, object): [c < b < a]

从逻辑上讲,排序(ordered)意味着,a大于bb大于c

这里就可以看到 categorical 实际上是计算一个列表型数据中的类别数,即不重复项,它返回的是一个CategoricalDtype 类型的对象,相当于在原来数据上附加上类别信息

属性 codescategories

具体的类别可以通过和对应的序号可以通过codescategories来查看:

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')

有序分类可以根据类别的自定义顺序进行排序,并且可以具有最小值和最大值。

>>>c = pd.Categorical(['a','b','c','a','b','c'], ordered=True, categories=['c', 'b', 'a'])
>>> c
[a, b, c, a, b, c]
Categories (3, object): [c < b < a]
>>> c.min()
'c'

属性

  • categories 这种分类的类别。
  • codes 此类别的类别代码。
  • ordered 类别是否具有有序关系
  • dtype 在CategoricalDtype此实例

参考

Update time: 2020-07-11

results matching ""

    No results matching ""