Python Pandas 分类数据
在实时数据中,常常包含重复的文本列。像性别、国家和代码等特征总是重复的。这些就是分类数据的例子。
分类变量只能有有限数量的可能值,通常是固定的。除了长度固定之外,分类数据可能有一个顺序,但不能进行数值操作。分类是Pandas的一种数据类型。
分类数据类型在以下情况下很有用:
- 只包含少数不同值的字符串变量。将这样的字符串变量转换为分类变量可以节省一些内存。
-
变量的词典顺序与逻辑顺序不相同(”one”,”two”,”three”)。通过将其转换为分类变量并指定类别的顺序,排序和min/max将使用逻辑顺序而不是词典顺序。
-
作为向其他Python库发出的信号,表明这一列应该被视为分类变量(例如,使用合适的统计方法或绘图类型)。
对象创建
分类对象可以通过多种方式创建。以下是不同的方式描述:
分类
在Pandas对象创建时,将dtype指定为”category”。
它的 输出 如下所示−
传递给系列对象的元素数量是四个,但类别只有三个。观察输出的类别。
pd.Categorical
使用标准的pandas Categorical构造函数,我们可以创建一个类别对象。
让我们举个例子−
它的 输出 如下:
让我们再来一个例子 −
它的 输出 如下:
在这里,第二个参数表示类别。因此,任何不在类别中的值都将被视为 NaN 。
现在,看下面的例子−
它的 输出 如下:
逻辑上,顺序意味着, a 大于 b 并且 b 大于 c 。
describe
在分类数据上使用 .describe() 命令,我们得到与 Series 或 DataFrame 类型的字符串相似的输出。
输出如下所示- 输出
获取类别的属性
obj.cat.categories 命令用于获取对象的 类别 。
它的 输出结果 如下:
obj.ordered 命令用于获取对象的顺序。
它的 输出 如下:
该函数返回 false ,因为我们没有指定任何顺序。
重命名分类
通过为 series.cat.categories 属性赋新值来重命名分类。
它的 输出 如下:
初始类别 [a,b,c] 被对象的 s.cat.categories 属性更新。
添加新类别
使用Categorical.add.categories()方法,可以追加新的类别。
它的输出如下所示 –
移除分类
使用 Categorical.remove_categories() 方法,可以移除不需要的分类。
它的 输出 如下:
分类数据的比较
可以在以下三种情况下将分类数据与其他对象进行比较:
- 将等号( and !=)与与分类数据长度相同的列表样对象(列表,Series,数组等)进行比较。
-
当orderedTrue且分类相同时,将分类数据的所有比较(,!=,>,>=,<,<=)与另一个分类Series进行比较。
-
将分类数据与标量进行比较的所有情况。
看下面的例子:
其 输出 如下: