Python Pandas CategoricalIndex – 获取分类的类别
Pandas是Python数据处理库中最重要的一个,是数据科学家们必不可少的工具之一。Pandas包含很多功能,包括处理矩形数据、时间序列数据以及带标签数据等等。其中最常用的就是分类数据的处理,而Pandas中的CategoricalIndex就是专门用于处理分类数据的。
什么是CategoricalIndex?
CategoricalIndex是一种元素类型为字符串的索引类型,类似于Python内置的list,但是它能支持分类并且能够节省内存而不是为每个字符串分配单独的内存空间。在Pandas中,DataFrame和Series都支持CategoricalIndex。
如何创建CategoricalIndex?
首先,我们需要导入pandas库和numpy库,这里我们使用numpy库来生成一些随机数据:
import pandas as pd
import numpy as np
category = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
我们使用pd.Categorical函数来创建一个分类变量category,其中包含了6个元素。此时,category变量还没有被分配到DataFrame或Series中,它只是单纯的一个分类变量。
如何获取分类的类别?
我们可以使用CategoricalIndex的categories属性来获取分类变量中的所有类别:
print(category.categories)
运行结果:
Index(['a', 'b', 'c'], dtype='object')
我们可以看到,category.categories返回的是Index对象,它包含了所有分类值的唯一值集合。
如何获取分类值出现的次数?
我们可以使用CategoricalIndex的value_counts()方法来获取不同分类值出现的次数:
print(category.value_counts())
运行结果:
c 2
b 2
a 2
dtype: int64
如何将DataFrame或Series的索引设置成CategoricalIndex?
我们可以使用DataFrame或Series的set_index()方法来设置索引。下面我们使用一个DataFrame作为演示:
np.random.seed(42)
df = pd.DataFrame(np.random.randint(1, 11, (10, 5)), columns=['a', 'b', 'c', 'd', 'e'])
# 使用CategoricalIndex设置索引
df.set_index(pd.Categorical(['a', 'a', 'b', 'b', 'c', 'c', 'd', 'd', 'e', 'e']), inplace=True)
print(df)
运行结果:
a b c d e
a 3 5 7 3 7
a 8 5 1 9 7
b 9 8 7 9 8
b 1 10 7 3 7
c 8 5 2 8 3
c 2 8 6 5 4
d 8 8 3 10 2
d 1 4 2 6 4
e 4 6 9 10 6
e 8 9 4 8 2
我们可以看到,现在DataFrame的索引已经被设置成了CategoricalIndex。
总结
CategoricalIndex是Pandas中一种用于处理分类变量的索引类型。它能支持分类并且能够节省内存而不是为每个字符串分配单独的内存空间。使用CategoricalIndex,我们可以轻松地获取分类变量中的所有类别、获得分类值出现的次数。在DataFrame和Series中使用CategoricalIndex,我们可以轻松地设置索引,为数据分析提供更加灵活的操作。
以上就是关于Python Pandas CategoricalIndex – 获取分类的类别的全部内容,希望这篇文章对大家有所帮助,谢谢阅读。