Pandas分类(category)数据处理
分类(Category)数据:直白来说,就是取值为有限的,或者说是固定数量的可能值。例如:性别、血型
指定数据类型构建分类数据
dtype="category"
以血型为例,创建一个关于血型的分类对象
import pandas as pd
index = pd.Index(data=["Tom", "Bob", "Mary", "James", "Andy", "Alice"], name="name")
user_info = pd.Series(data=["A", "AB", np.nan, "AB", "O", "B"], index=index, name="bloo d_type", dtype="category")
user_info
"""
name
Tom A
Bob AB
Mary NaN
James AB
Andy O
Alice B
Name: bloo d_type, dtype: category
Categories (4, object): [A, AB, B, O]
"""
使用 pd.Categorical 来构建分类数据
import pandas as pd
index = pd.Index(data=["Tom", "Bob", "Mary", "James", "Andy", "Alice"], name="name")
user_info = pd.Series(data=["A", "AB", np.nan, "AB", "O", "B"], index=index, name="blood_type")
# categories:自定义类别数据
pd.Categorical(user_info, categories=["A", "B", "AB"])
"""
[A, AB, NaN, AB, NaN, B]
Categories (3, object): [A, B, AB]
"""
转为分类数据
我们经常遇到的情况是已经创建了一个 Series,如何将它转为分类数据呢?来看看 astype 用法吧
user_info = pd.Series(data=["A", "AB", np.nan, "AB", "O", "B"], index=index, name="bloo d_type")
user_info = user_info.astype("category")
user_info
"""
name
Tom A
Bob AB
Mary NaN
James AB
Andy O
Alice B
Name: bloo d_type, dtype: category
Categories (4, object): [A, AB, B, O]
"""
常用操作
.describe()
可以对分类数据使用 .describe() 方法,得到的结果与 string 类型的数据相同
user_info.describe()
"""
count 5
unique 4
top AB
freq 2
Name: bloo d_type, dtype: object
""" """
count:非空的数据有5条
unique:去重后的非空数据有4条
top:出现次数最多的值为 AB
freq:出现次数最多的值的次数为2次。
"""
.cat.categories
使用 .cat.categories 来获取分类数据所有可能的取值:
user_info.cat.categories
"""
Index(['A', 'AB', 'B', 'O'], dtype='object')
"""
.cat.rename_categories
使用 .cat.rename_categories 方法来重命名分类名称
user_info.cat.rename_categories(["A+", "AB+", "B+", "O+"])
添加、删除分类的操作,这些都可以通过 .cat.add_categories 、.cat.remove_categories 来实现。
.value_counts()
使用 value_counts 方法来查看数据分布的
user_info.value_counts()
.str 属性
使用 .str 属性来访问分类数据
# 查看是否包含字母 "A
user_info.str.contains("A")
pd.concat
使用 pd.concat 分类数据合并
blood_type1 = pd.Categorical(["A", "AB"])
blood_type2 = pd.Categorical(["B", "O"])
pd.concat([pd.Series(blood_type1), pd.Series(blood_type2)])
union_categoricals
分类数据经过 pd.concat 合并后类型转为了 object 类型,如果想要保持分类类型的话,可以借助 union_categoricals 来完成。
from pandas.api.types import union_categoricals
union_categoricals([blood_type1, blood_type2])
内存使用量
Categorical 的内存使用量是 与分类数乘以数据长度成正比
object 类型的数据 是一个 常数*数据的长度
在类别的数量很少的情况下,分类数据非常节省内存
blood_type = pd.Series(["AB","O"]*1000)
blood_type.nbytes #
blood_type.astype("category").nbytes #
当类别的数量接近数据的长度,那么 Categorical 将使用与等效的 object 表示几乎相同或更多的内存
blood_type = pd.Series(['AB%04d' % i for i in range(2000)])
blood_type.nbytes #
blood_type.astype("category").nbytes #
Pandas分类(category)数据处理的更多相关文章
- Pandas分类
Pandas分类 categorical data是指分类数据:数据类型为:男女.班级(一班.二班).省份(河北.江苏等),若使用赋值法给变量赋值,例如(男=1,女=0),数字1,0之间没有大小之分, ...
- Pandas分类数据
通常实时的数据包括重复的文本列.例如:性别,国家和代码等特征总是重复的.这些是分类数据的例子. 分类变量只能采用有限的数量,而且通常是固定的数量.除了固定长度,分类数据可能有顺序,但不能执行数字操作. ...
- 从C#到Objective-C,循序渐进学习苹果开发(3)--分类(category)和协议Protocal的理解
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本文继续上一篇随笔<从 ...
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol
关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 2014-02-18 19:57 315人阅读 评论(0) 收藏 举报 1.category, ...
- Objective-C分类 (category)和扩展(Extension)
1.分类(category) 使用Object-C中的分类,是一种编译时的手段,允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以 ...
- OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法
一. 分类-Category 1. 基本用途:Category 分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...
- Runtime - ③ - 分类Category探究
写博客只是为了让自己学的更深刻,参考:https://tech.meituan.com/DiveIntoCategory.html 分类(Category)是个啥玩意儿这里就不多介绍了,这里主要是研究 ...
- iOS之分类(category)
1.分类(category)的作用 1.1作用:可以在不修改原来类的基础上,为一个类扩展方法.1.2最主要的用法:给系统自带的类扩展方法. 2.分类中能写点啥? 2.1分类中只能添加“方法”,不能增加 ...
- OC中分类(Category)和扩展(Extension)
1.分类的定义 category是Objective-C 2.0之后添加的语言特性,中文也有人称之为分类.类别.Category的主要作用是为已经存在的类添加方法.这个大家可能用过很多,如自己给UIC ...
- Objective-C:继承、分类(Category、extension)、协议(protocol),个人理解,仅供参考
总结:继承.分类(Category.extension).协议(protocol) 一.继承: (1)特点: 继承多用于一般父类中的方法功能比较齐全,子类从父类继承过来使用,可以省略很多重复的代码 ...
随机推荐
- Spark 学习笔记之 Streaming和Kafka Direct
Streaming和Kafka Direct: Spark version: 2.2.0 Scala version: 2.11 Kafka version: 0.11.0.0 Note: 最新版本感 ...
- 大头儿子和小头爸爸的战斗--java字符和字符串
故事背景 一座普普通通的小屋里,住着大头儿子.小头爸爸和围裙妈妈.在他们普普通通的生活中,总是响起充满欢乐的笑声.最温暖的家又成了他们每个人的爱的源泉. <大头儿子和小头爸爸>是孩子居首( ...
- Hexo 博客快速整合公众号导流工具,不用互推也能实现粉丝躺增!
readmore 插件简介 Hexo 整合 OpenWrite 平台的 readmore 插件,实现博客的每一篇文章自动增加阅读更多效果,关注公众号后方可解锁全站文章,从而实现博客流量导流到微信公众号 ...
- Vue/React圆环进度条
数据展示,一直是各行各业乐此不疲的需求,具体到前端开发行业,则是各种各种图表数据展示,各种表格数据展示,烦不胜烦(繁不胜繁)! 前几天刚做了折线图.柱状图.饼状图之类的图表数据展示效果,今天又碰到了类 ...
- 给老师安排课表JAVA项目及登录窗口的实现
实现一个安排课表的Java实验. 有以下几点要求: ①用所给的教师姓名进行课表安排 ②用所给的地点进行课表安排 ③不得有重复的课程名称出现 ④将信息写入到文件里 ⑤用窗口来进行实现 package c ...
- Aria2 1.35.0,更新,测试,发布
在上一篇: 有哪些便宜还好用的东西,买了就感觉得了宝一样? 结尾提到了Tatsuhiro Tsujikawa的aria2计划在10月更新一个新的版本 今天趁着雨后明月挂天,开始了简单的更新 虽然在半年 ...
- CRS-2674: Start of 'ora.cssd' on 'rac2' failed 引发的rac集群服务起不来问题
问题背景:客户反馈Oracle rac集群节点宕机 1.首先查看宕机原因,归档日志满导致服务重启,查看归档日志路径是USE_DB_RECOVERY_FILE_DEST (默认路径), 安装的时候没有做 ...
- 域渗透基础之Windows 2012创建域控制器
创建备份域控制器 这里就拿windows 2012 R2来当备份域控 如果一个域内有多个域控制器,可以有如下好处. 提高用户登录的效率:如果同时有多台域控制器对客户提供服务,可以分担审核用户登录身份( ...
- [JOYOI1463] 智商问题
题目限制 时间限制 内存限制 评测方式 题目来源 1500ms 131072KiB 标准比较器 Local 题目背景 各种数据结构帝~ 各种小姊妹帝~ 各种一遍AC帝~ 来吧! 题目描述 某个同学又有 ...
- Spring Cloud Alibaba(二) 配置中心多项目、多配置文件、分目录实现
介绍 之前Spring Cloud Config基础篇这篇文章介绍了Spring Cloud Config 配置中心基础的实现,今天继续聊下Spring Cloud Config 并结合nacos做服 ...