pandas 中 Category 的应用

pandas高阶应用 1、时间序列相关操作 pd的date_range中的基本时间序列频率 Alias Description(偏移量类型) 说明 B business day frequency 每工作日 C custom business day frequency 自定义工作日频率 D calenda 阅读详情

Categoricals 是 pandas 的一种数据类型,对应着被统计的变量。Categoricals 是由固定的且有限数量的变量组成的。比如:性别、社会阶层、血型、国籍、观察时段、赞美程度等等。

与其它被统计的变量相比,categorical 类型的数据可以具有特定的顺序——比如:按程度来设定,“强烈同意”与“同意”,“首次观察”与“二次观察”,但是不能做按数值来进行排序操作(比如:sort_by 之类的,换句话说,categorical 的顺序是创建时手工设定的,是静态的)

类型数据的每一个元素的值要么是预设好的类型中的某一个,要么是空值(np.nan)。顺序是由预设好的类型集合来决定的,而不是按照类型集合中各个元素的字母顺序排序的。categorical 实例的内部是由类型名字集合和一个整数组成的数组构成的,后者标明了类型集合真正的值。

对 Categorical 数据的一个直观认识

隐式创建 Categorical 数据

用一段代码从不同角度来展现一下 categorical 类型的数据。

# 先创建一个简单的 DataFrame 实例
# Terry, Hardon, Curry, Duran, James 和 Barter 代表东西部玩三打三
# 用一组数据记录各自的得分情况
import pandas as pd, numpy as np
players=['Garsol','Hardon','Bill','Duran','James','Barter']
scores=[22,34,12,31,26,19]
teams=['West','West','East','West','East','East']
df=pd.DataFrame({'player':players,'score':scores,'team':teams})
df

输出:

   player  score  team
0  Garsol     22  West
1  Hardon     34  West
2    Bill     12  East
3   Duran     31  West
4   James     26  East
5  Barter     19  East

可以看出 team 这一列,其实只有两种值:East 和 West,可以将 team 列的类型设定为 category

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。计算过程就应该是这样:

d=pd.Series(scores).describe()
score_ranges=[d['min']-1,d['mean'],d['max']+1]
score_labels=['Role','Star']
# 用pd.cut(ori_data, bins, labels) 方法
# 以 bins 设定的画界点来将 ori_data 归类,然后用 labels 中对应的 label 来作为分类名
df['level']=pd.cut(df['score'],score_ranges,labels=score_labels)
print 'df :'
print df
print '\n对比一下 Category 类型的数据和普通的 DataFrame中的列有什么区别'
print '\ndf[\'team\'] 是普通的 DataFrame列'
print df['team']
print '\ndf[\'level\'] 是 Category 类型的'
print df['level']
print '\n可以看出 df[\'level\'] 有点像是集合,输出信息会去重后列出组成元素'
print df['level'].get_values()
df :
   player  score  team level
0  Garsol     22  West  Role
1  Hardon     34  West  Star
2    Bill     12  East  Role
3   Duran     31  West  Star
4   James     26  East  Star
5  Barter     19  East  Role

对比一下 Category 类型的数据和普通的 DataFrame中的列有什么区别

df['team'] 是普通的 DataFrame列
0    West
1    West
2    East
3    West
4    East
5    East
Name: team, dtype: object

df['level'] 是 Category 类型的
0    Role
1    Star
2    Role
3    Star
4    Star
5    Role
Name: level, dtype: category
Categories (2, object): [Role < Star]

可以看出 df['level'] 有点像是集合,输出信息会去重后列出组成元素
['Role' 'Star' 'Role' 'Star' '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

s=pd.Series(cg)
s
0    Role
1    Role
2    Star
3    Role
4     NaN
5    Star
dtype: category
Categories (2, object): [Role, Star]

也可以将 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数据清洗第一步:df.info()的深度解读与实战应用 在数据分析与机器学习项目中,数据质量是决定模型效果与结论可信度的基石。探索性数据分析(EDA)作为数据科学工作流的关键环节,其核心在于快速诊断数据健康状况。数据清洗作为提升数据质量的首要步骤,需要依赖高效的工具进行初步评估。Pandas库中的df.info()函数正是这样一个强大的诊断工具,它能在毫秒级时间内生成数据集的全面“体检报告”,包括数据维度、列信息、数据类型及缺失值情况。通过解读Non-Null Count和Dtype等关键信息,分析者能立即识别数据完整性问题与类型错误,例如发现数值列被误存为低效 阅读详情

相关推荐

Python之pandas:特征工程中数据类型(object/category/bool/int32/int64/float64)的简介、数据类型转换四大方法、案例应用之详细攻略

Python之pandas:数据类型变换之object、category、bool、int32、int64、float64以及数据类型标准化之详细攻略 目录 数据类型变换之object、category、bool、int32、int64、float64以及数据类型标准化 知识点 1、category类型与object类型 输出结果 实现代码 推荐文章 ​​​​​​​Python之pandas:在pandas中创建category类型数据的几...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 2万+

Pandas笔记

2019年4月3日: 1.DataFrame常用属性: values | DataFrame的值 属性 解释 values DataFrame的值 index 行索引 index.name 行索引的名字 columns 列索引 columns.name 列索引的名字 ix 返回行的DataFrame ix[[x,y,…], [x,y,…]] 对行重新索引,然...

大若智鱼的博客 390

华为云Stack 8.X 流量模型分析(一)

​ 当内部需要提供对外服务时(如对外发布Web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。​ 内部地址要访问公网上的服务时(如Web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。

Ciyaso的博客 3245

pandas中对df进行多条件筛选

定义方法,将如'A列>15'这样的筛选条件按照>号分割成A列和15,,以便使用df['A']>15进行df的筛选。现在我想根据以下条件:"性别==男",'身高==高or身高==矮','体重>100'。直接筛选出最终的df。对于一个df,有的时候希望对df中每个列指定不同的筛选条件,并希望根据这个条件,直接筛选出最终的df结果。#将索引数组,转化为True和False的逻辑数组,否则对df进行索引时会报错。#将所有的索引条件数组相乘,得到最终的索引数组。例子:有一个df,字段有:性别,身高,体重。

weixin_61206738的博客 2324

LabVIEW状态机实战:用STM32+DHT11搭建温湿度监测系统(附完整VI源码)

本文详细介绍了如何利用LabVIEW状态机模式与STM32微控制器、DHT11温湿度传感器构建温湿度监测系统。通过硬件选型、状态机设计、LabVIEW程序实现及系统优化等环节,提供了一套完整的解决方案,并附有VI源码,助力开发者快速实现嵌入式温湿度监测应用。

weixin_42549723的博客 524

555时基芯片的5种经典电路设计:从方波发生器到PWM调光实战

本文深入解析了555时基芯片的5种经典电路设计,从基础的无稳态方波发生器、单稳态触发器,到实用的占空比可调PWM信号源,并重点介绍了如何引入TVS保护电路增强系统鲁棒性。最后通过一个带保护的PWM LED调光台灯实战项目,综合展示了信号生成、功率驱动与电路保护的核心技术,是电子爱好者掌握模拟电路设计与应用的绝佳指南。

weixin_29207439的博客 492

python_分类_category方法

python_分类_category方法 from_codes构造器 Advanced pandas import numpy as np import pandas as pd np.random.seed(12345) import matplotlib.pyplot as plt plt.rc('figure', figsize=(10, 6)) PREVIOUS_MAX_ROWS = pd...

wj1298250240的博客 6619

Python实战:用nltk库5步搭建你的第一个n-gram文本生成器(附古诗生成案例)

本文详细介绍了如何使用Python的nltk库5步搭建n-gram文本生成器,并附有古诗生成案例。从环境准备、n-gram原理讲解到完整实现,逐步指导开发者掌握自然语言生成技术。特别针对中文古诗生成进行了优化,包括分词处理和韵律控制,帮助读者快速上手文本生成项目。

weixin_29090089的博客 203

pandas ----数据分类(category)

目录1.category的创建及其性质1.1. 分类变量的创建1.2. 分类变量的结构1.3. 类别的修改2.分类变量的排序2.1. 序的建立3.分类变量的比较操作3.1. 与标量或等长序列的比较3.2. 与另一分类变量的比较 1.category的创建及其性质 这是对pandas分类数据类型的介绍,包括与R的简短比较factor。 category是与统计中分类变量相对应的 pandas数据类型...

疯子书生的博客 3704

GIS常用坐标系简介

EPSG:4326是基于WGS 84的地理坐标系,使用经纬度表示,适用于全局定位和地理数据表示。它的缺点是在进行距离、面积计算等地理分析时不够准确。EPSG:3857是投影坐标系,使用平面米坐标表示,适用于在线地图展示,特别适合 Web 地图应用。虽然它在地图展示中很高效,但由于投影引起的变形问题,它不适合高精度地理测量和计算。

weixin_59096287的博客 1977

python实现RsaWithSHA256签名以及国密Sm3WithSm2签名

【代码】python实现RsaWithSHA256签名以及国密Sm3WithSm2签名。

weixin_45005677的博客 3356

如何用python进行数据筛选_Python数据处理从零开始----第二章(pandas)(十一)通过列属性对列进行筛选...

目录第二章(pandas)Python数据处理从零开始----第二章(pandas)(十一)通过列属性对列进行筛选本文主要目的是通过列属性进行列挑选,比如在同一个数据框中,有的列是整数类的,有的列是字符串列的,有的列是数字类的,有的列是布尔类型的。假如我们需要挑选或者删除属性为整数类的列,就可能需要用到pandas.DataFrame.select_dtypes函数功能该函数的主要格式是:Data...

weixin_39532466的博客 948

ST-LINK调试原理与STM32硬件连接实战指南

嵌入式调试器是连接开发环境与物理MCU的核心枢纽,其本质是基于ARM CoreSight架构的实时硬件观测与控制接口。它通过JTAG或SWD协议访问内核寄存器、内存及外设,实现断点、单步、内存监视等深度调试能力,远超简单程序烧录功能。ST-LINK作为主流ARM Cortex-M调试器,支持SWD(2线)与JTAG(多线)双模式,在电平匹配、复位控制、引脚复用规避等硬件层面临关键工程约束。掌握VREF参考电压配置、nSRST硬复位接线、调试引脚隔离策略及Keil MDK调试会话配置,是保障STM32稳定联机

weixin_42596214的博客 312

pandas中Category的应用

文章目录对 Categorical 数据的一个直观认识隐式创建 Categorical 数据显式创建 Categorical 数据 Categoricals 是 pandas 的一种数据类型,对应着被统计的变量。Categoricals 是由固定的且有限数量的变量组成的。比如:性别、社会阶层、血型、国籍、观察时段、赞美程度等等。 与其它被统计的变量相比,categorical 类型的数据可以具有特...

我是天才很好 5340

点云从入门到精通技术详解100篇-基于点云语义分割的电力线提取及聚类研究

在现代社会,电力一直扮演着最重要的角色之一。它不仅与人民的生活息息相关,更是一个国家发展的命脉。近年来,随着我国各特高压输电线路建成(比如2022年1月份白鹤滩江苏特高压输电线路的放线)以及电网规模的不断扩大,我国年发电量稳步上升,人民的生活水平越来越高。我国土地辽阔,输电线路分布广泛,再加上地形环境复杂多样,电力线可能遭受风吹雨晒甚至是冰雪寒灾的影响。因此,为了保障电力线的可靠供电,防止停电意外发生,电力部门要定期对输电线路进行检查。目前我国主要。

getusushu的博客 1010

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

task09 - 分类数据 pandas的category对象

一、作业 Ex2:钻石数据集 现有一份关于钻石的数据集,其中 carat, cut, clarity, price 分别表示克拉重量、切割质量、纯净度和价格。 1 分别对 df.cut 在 object 类型和 category 类型下使用 nunique 函数,并比较它们的性能。 2 钻石的切割质量可以分为五个等级,由次到好分别是 Fair, Good, Very Good, Premium, Ideal ,纯净度有八个等级,由次到好分别是 I1, SI2, SI1, VS2, VS1, VVS2, VV

XYQLTX的博客 405

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【python学习】category数据类型

本文简述category数据类型的创建、操作方法及应用。

s1k9y9的博客 890

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

pandas object转float_Pandas入门教程(六)

importpandasaspdgl=pd.read_csv('./pandas/data/game_logs.csv')#数据的内存使用情况gl.info(memory_usage='deep')RangeIndex: 171907 entries, 0 to 171906Columns: 161 entries, date to acquisition_infodtypes:...

weixin_39812577的博客 146

2021-11-07大数据学习日志——Pandas——Pandas数据类型

01_数据类型简介 学习目标 了解 Numpy 的特点 知道 pandas 中的数据类型 1.1 pandas 数据类型简介 1.1.1 Numpy 介绍 Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。 1)Numpy 支持常见的数组和矩阵操作 对于同样的数值计算任务,使用 Numpy 比直接使用 Python 要简洁的多 2)Numpy 使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器 比如我们现在

tingbaobaoo的博客 1770

[黑马程序员Pandas教程]——Pandas数据类型

Pandas数据类型Python类型说明objectstr字符串int64int整数float64float浮点数boolbool布尔值category无原生类型分类类型datetime无原生类型时间日期类型timedelta无原生类型时间差类型。

qq_56444564的博客 422

【pandas基础】--数据类型

字符串类型也是可以转换成数值类型的,前提是字符串的内容得是数值。"name": ["小华", "小红", "小明"],},score列有字符串类型转换为了float64类型,另外代码中注释的两行是不能成功转换的,去掉注释后,代码执行时会抛出异常错误。看上面的示例数据,name列是不太可能转成数值类型的,但是money列只是多了一个人民币符号¥,其实这列本质上应该是数值类型,也许后续需要根据这列的数值来分析花费的费用等情况。这时,直接用astype是无法完成类型转换的,要用自定义函数来去掉人民币符号。

Gefangenes的博客 2911

数据分析-Pandas类别数据中的字符串和日期处理

数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律?

Alex_StarSky的博客 2032

pandas1.0.5学习笔记(八)分类数据

pandas1.0.5学习笔记(八)分类数据数据及背景知识总结category的创建及其性质分类变量的排序分类变量的比较操作问题1.如何使用union_categoricals方法?它的作用是什么?2.利用concat方法将两个序列纵向拼接,它的结果一定是分类变量吗?什么情况下不是?3.当使用groupby方法或者value_counts方法时,分类变量的统计结果和普通变量有什么区别?4.下面的代码说明了Series创建分类变量的什么“缺陷”?如何避免?(提示:使用Series中的copy参数)练习练习一练

CNcorazon的博客 599

Pandas

1 Pandas 数据分析入门 1 计算常用统计值 college.describe() import numpy as np college.describe(include=[np.object, pd.Categorical]).T college.info() 2 常用排序方法 找到小成本高口碑电影 nlargest(100, ‘imdb_score’).nsmallest(5, ‘budget’) 找到每年imdb评分最高的电影 movie3 = movie2.sort_values([‘tit

weixin_46072106的博客 223

Pandas入门教程(六)

import pandas as pd gl=pd.read_csv('./pandas/data/game_logs.csv') # 数据的内存使用情况 gl.info(memory_usage='deep') <class 'pandas.core.frame.DataFrame'> RangeIndex: 171907 entries, 0 to 171906 Columns: 161 entries, date to acquisition_info dtypes: float64(

Linux,Java,SpringBoot,Python,Lua略知一点 534

编程实践(Pandas)Task09

一、cat对象 1. cat对象的属性 在 pandas 中提供了 category 类型,使用户能够处理分类类型的变量,将一个普通序列转换成分类变量可以使用 astype 方法。 df = pd.read_csv('data/learn_pandas.csv', usecols = ['Grade', 'Name', 'Gender', 'Height', 'Weight']) s = df.Grade.astype('category') s.head() 0

Daisy的博客 243
上一篇: Numpy学习—np.random.randn()、np.random.rand()和np.random.randint()
下一篇: Matplotlib 线型,线色,图形标注
心觉001
博客等级 码龄18年 1581粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值