分类数组是定性数据数组,其值取自离散数据、非数值数据组成的有限集。分类数组的元素可以是有序的等级数据,如“很小”、“小”、“中”、“大”,或“少年”、“青年”、“中年”、“老年”等;也可以是无序的定性数据,如“红”、“橙”、“黄”、“绿”等。本节主要介绍分类数组的创建、分类值的查看和分类数组是否有序。[大谦MATLAB,dqmatlab点com]
创建分类数组
使用分类数组,首先要创建它,MATLAB和Python的pandas包都提供了创建分类数组的函数。
【MATLAB】
MATLAB用categorical函数创建分类数组。在命令窗口中输入:
>> S=categorical({'XL';'L';'M';'S';'M';'L';'XXL'})
S=
7×1 categorical 数组
XL
L
M
S
M
L
XXL
【Python】
Python中使用pandas包的Categorical函数直接创建分类数组,例如:
>>> import pandas as pd
>>> cat=pd.Categorical(['XL', 'L', 'M', 'S', 'M', 'L', 'XXL'])
>>> cat
['XL', 'L', 'M', 'S', 'M', 'L', 'XXL']
Categories(5, object): ['L', 'M', 'S', 'XL', 'XXL']
可以用Series函数将分类数组转换为Series对象。
>>> s=pd.Series(cat)
>>> s
0 XL
1 L
2 M
3 S
4 M
5 L
6 XXL
dtype: category
Categories(5, object): ['L', 'M', 'S', 'XL', 'XXL']
查看分类值
分类数组中的分类,可以用数组中的唯一元素值表示。MATLAB和Python的pandas包都提供了相应的函数进行查看。
【MATLAB】
MATLAB用categories函数查看分类数组的类别。
>> S=categorical({'XL';'L';'M';'S';'M';'L';'XXL'})
>> categories(S)
ans =
5×1 cell 数组
{'L' }
{'M' }
{'S' }
{'XL' }
{'XXL'}
【Python】
Python中使用pandas包中分类数组对象的categories属性进行查看。
>>> import pandas as pd
>>> cat=pd.Categorical(['XL', 'L', 'M', 'S', 'M', 'L', 'XXL'])
>>> cat.categories
Index(['L', 'M', 'S', 'XL', 'XXL'], dtype='object')
有序分类数组
分类数组中的元素如果是有序的等级数据,可以在使用categorical(Categorical)函数创建分类数组时指定相关参数的值,指定数组为有序。
【MATLAB】
下面先创建一个数值数组:
>> A=[4 3 2 1 2 3 5]
A =
4 3 2 1 2 3 5
然后用categorical函数将A转换为有序分类数组,其中1到5分别用类别'S'、'M'、'L'、'XL'和'XXL'表示。将categorical函数中Ordinal参数的值设置为true。
>> valueset=[1:5];
>> catnames={'S','M','L','XL','XXL'};
>> B=categorical(A,valueset,catnames,'Ordinal',true)
B=
1×7 categorical 数组
XL L M S M L XXL
用iscategorical函数可以确定输入是否为分类数组,用iscategory函数可以测试分类数组的类别。
【Python】
类似地,Python中将一个分类数组设置为有序,可在使用Categorical函数创建分类数组时将ordered参数的值设置为True。
>>> import pandas as pd
>>> size_categories=['S', 'M', 'L', 'XL', 'XXL']
>>> cat=pd.Categorical(['XL','L','M','S', 'M', 'L', 'XXL'], categories=size_categories, ordered=True)
>>> cat
['XL', 'L', 'M', 'S', 'M', 'L', 'XXL']
Categories(5, object): ['S' < 'M' < 'L' < 'XL' < 'XXL']
可见,将分类数组设置为有序后,Categorical函数返回的分类数组的类别显示部分会有一个分类值的排序。