pandas中Category的应用
文章目录
- 对 Categorical 数据的一个直观认识
- 隐式创建 Categorical 数据
- 显式创建 Categorical 数据
Categoricals 是 pandas 的一种 数据类型,对应着被统计的变量。Categoricals 是由固定的且有限数量的变量组成的。比如:性别、社会阶层、血型、国籍、观察时段、赞美程度等等。
与其它被统计的变量相比,categorical 类型的数据可以具有特定的顺序——比如:按程度来设定,“强烈同意”与“同意”,“首次观察”与“二次观察”,但是不能做按数值来进行排序操作(比如:sort_by 之类的,换句话说,categorical 的顺序是创建时手工设定的,是静态的)。
类型数据的每一个元素的值要么是预设好的类型中的某一个,要么是空值(np.nan)。顺序是由预设好的类型集合来决定的,而不是按照类型集合中各个元素的字母顺序排序的。categorical 实例的内部是由类型名字集合和一个整数组成的数组构成的,后者标明了类型集合真正的值。
对 Categorical 数据的一个直观认识
隐式创建 Categorical 数据
# 用一段代码从不同角度来展现一下 categorical 类型的数据 # 先创建一个简单的 DataFrame 实例 # Terry, Hardon, Curry, Duran, James 和 Barter 代表东西部玩三打三 # 用一组数据记录各自的得分情况 import pandas as pd import numpy as npplayers = ['Garsol','Hardon','Bill','Duran','James','Barter'] teams = ['West','West','East','West','East','East'] scores = [22,34,12,31,26,19] df = pd.DataFrame({'player':players,'score':scores,'team':teams}) df| Garsol | 22 | West |
| Hardon | 34 | West |
| Bill | 12 | East |
| Duran | 31 | West |
| James | 26 | East |
| Barter | 19 | East |
可以看出 team 这一列,其实只有两种值:East 和 West,可以将 team 列的类型设定为 category.
df.team 0 West 1 West 2 East 3 West 4 East 5 East Name: team, dtype: object df.team.astype('category') 0 West 1 West 2 East 3 West 4 East 5 East Name: team, dtype: category Categories (2, object): [East, West]可以看到,df.team 的变量类型变成了 category。
当然,迄今为止,这个分类是我们手工标记上去的,主动给每一个球员加上了 east 或者 west 的标记。那么,如果是动态的来添加呢?比如按照得分来划分,将高于平均分的划为 Star,低于平均分的划为 Role。
计算过程就应该是这样:
显式创建 Categorical 数据
cg = pd.Categorical(['Role','Role','Star','Role','Killer','Star'],categories=['Role', 'Star']) cg [Role, Role, Star, Role, NaN, Star] Categories (2, object): [Role, Star]可以看到,构造方法中第二个参数是指定了实例中可以包含的元素,在第一个参数中的元素如果不在 categories 中,就会被转成NaN。
Categorical 实例可以转为 Series,被称为 categorical series
也可以将 categorical 实例加入到 dataframe 实例的某一列中,被称为 categorical dataframe column:
df = pd.DataFrame({'players':['Garsol','Hardon','Bill','Duran','James','Barter']}) df['level'] = cg print(df['level'],'\n\n',df.dtypes) 0 Role 1 Role 2 Star 3 Role 4 NaN 5 Star Name: level, dtype: category Categories (2, object): [Role, Star] players object level category dtype: object作者:那未必
链接:https://www.jianshu.com/p/20169d7f60bc
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
总结
以上是生活随笔为你收集整理的pandas中Category的应用的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 制作纯净的U盘启动盘(避免纯净系统安装后
- 下一篇: 如何使用PC3000检测硬盘