08-python-pandas-category
8. Pandas高级教程之:category数据类型
简介
Pandas中有一种特殊的数据类型叫做category。它表示的是一个类别,一般用在统计分类中,比如性别,血型,分类,级别等等。有点像java中的enum。
今天给大家详细讲解一下category的用法。
创建category
使用Series创建
在创建Series的同时添加dtype="category"就可以创建好category了。category分为两部分,一部分是order,一部分是字面量:
In [1]: s = pd.Series(["a", "b", "c", "a"], dtype="category")
In [2]: s
Out[2]:
0 a
1 b
2 c
3 a
dtype: category
Categories (3, object): ['a', 'b', 'c']可以将DF中的Series转换为category:
可以创建好一个pandas.Categorical ,将其作为参数传递给Series:
使用DF创建
创建DataFrame的时候,也可以传入 dtype="category":
DF中的A和B都是一个category:
或者使用df.astype("category")将DF中所有的Series转换为category:
创建控制
默认情况下传入dtype='category' 创建出来的category使用的是默认值:
Categories是从数据中推断出来的。
Categories是没有大小顺序的。
可以显示创建CategoricalDtype来修改上面的两个默认值:
同样的CategoricalDtype还可以用在DF中:
转换为原始类型
使用Series.astype(original_dtype) 或者 np.asarray(categorical)可以将Category转换为原始类型:
categories的操作
获取category的属性
Categorical数据有 categories 和 ordered 两个属性。可以通过s.cat.categories 和 s.cat.ordered来获取:
重排category的顺序:
重命名categories
通过给s.cat.categories赋值可以重命名categories:
使用rename_categories可以达到同样的效果:
或者使用字典对象:
使用add_categories添加category
可以使用add_categories来添加category:
使用remove_categories删除category
删除未使用的cagtegory
重置cagtegory
使用set_categories()可以同时进行添加和删除category操作:
category排序
如果category创建的时候带有 ordered=True , 那么可以对其进行排序操作:
可以使用 as_ordered() 或者 as_unordered() 来强制排序或者不排序:
重排序
使用Categorical.reorder_categories() 可以对现有的category进行重排序:
多列排序
sort_values 支持多列进行排序:
比较操作
如果创建的时候设置了ordered==True ,那么category之间就可以进行比较操作。支持 ==, !=, >, >=, <, 和 <=这些操作符。
其他操作
Cagetory本质上来说还是一个Series,所以Series的操作category基本上都可以使用,比如: Series.min(), Series.max() 和 Series.mode()。
value_counts:
DataFrame.sum():
Groupby:
Pivot tables:
本文已收录于 www.flydean.com
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
最后更新于
这有帮助吗?