Pandas-分类数据

  • category的创建及其性质
  • 分类变量的创建
  • 用Series创建
  • 对DateFrame指定类型创建
  • 利用内置Categorical类型创建
  • 利用cut函数创建
  • 分类变量的结构
  • descibe方法
  • categories和ordered属性
  • 类别的修改
  • 利用set_categories修改
  • 利用rename_categories修改
  • 利用add_categories添加
  • 利用remove_categories移除
  • 分类变量的排序
  • 序的建立
  • 排序
  • 分类变量的比较操作
  • 与标量或等长序列的比较
  • 与另一分类变量的比较


category的创建及其性质

分类变量的创建

用Series创建

pd.Series(["a", "b", "c", "a"], dtype="category")

对DateFrame指定类型创建

temp_df = pd.DataFrame({'A':pd.Series(["a", "b", "c", "a"],dtype="category"),'B':list('abcd')})

利用内置Categorical类型创建

cat = pd.Categorical(["a", "b", "c", "a"], categories=['a','b','c'])

利用cut函数创建

利用cut函数创建分类变量时默认使用区间类型为标签。当然也可指定字符为标签。

分类变量的结构

一个分类变量包括三个部分,元素值(values)、分类类别(categories)、是否有序(order)

descibe方法

该方法描述了一个分类序列的情况,包括非缺失值个数、元素值类别数(不是分类类别数)、最多次出现的元素及其频数。

categories和ordered属性

两个属性分别用来查看分类类别和是否排序

s.cat.categories
s.cat.ordered

类别的修改

利用set_categories修改

只会修改分类但本身值不会变化

利用rename_categories修改

该方法会把值和分类同时修改

利用add_categories添加

利用remove_categories移除

分类变量的排序

序的建立

1、将一个序列转为有序变量,可以利用as_ordered方法,将有序变量退化为无序变量,只需要使用as_unordered。
2、利用set_categories方法中的order参数
3、利用reorder_categories方法(这个方法的特点在于,新设置的分类必须与原分类为同一集合)

排序

分类变量的比较操作

与标量或等长序列的比较

s = pd.Series(["a", "d", "c", "a"]).astype('category')
s == 'a'
s == list('abcd')

与另一分类变量的比较

1、等式判别:两个分类变量的等式判别需要满足分类完全相同(包含等号和不等号)
2、不等式判别(>=,<=,<,>)
两个发呢类变量的不等式判别需要满足两个条件:分类完全相同并且排序完全相同。