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、不等式判别(>=,<=,<,>)
两个发呢类变量的不等式判别需要满足两个条件:分类完全相同并且排序完全相同。