python之高阶pandas的使用(一)

用维度表表示重复的值

values=pd.Series(['apple','orange','lemon','apple']*2)
values

python之高阶pandas的使用(一)

去重

pd.unique(values)

python之高阶pandas的使用(一)

计算每个种类出现次数

pd.value_counts(values)

python之高阶pandas的使用(一)

我们可以用不同的数字来编码不同的值

value=pd.Series([0,1,2,0]*2)
value

python之高阶pandas的使用(一)

take用于恢复之前的字符串

dim=pd.Series(['apple','egg','orange'])
dim.take(value)

python之高阶pandas的使用(一)

pandas中的Categorical data

pandas拥有特殊的Categorical类型,用于承载基于整数的类别展示或编码的数据。

首先我们先创建一个dataframe格式的数据

food=['bread','rice','apple','apple']*2

python之高阶pandas的使用(一)
n=len(food)
df=pd.DataFrame({'foods':food,
                 'id':np.arange(n),
                 'count':np.random.randint(2,15,size=n),
                 'weight':np.random.uniform(0,4,size=n)},
                 columns=['id','foods','count','weight'])
df

python之高阶pandas的使用(一)

Categorical Data数据的生成

codescategories组成,categories是有限且唯一的分类集合,codes是原数据对应的分类的编码,将数据类型变为Categorical data的三种方式:

(1)df某一列转换为Categorical对象

然后我们可以将某一列转换为Categorical对象,比如df[‘foods’]是一个字符串对象组成的数组,现在我们将它变为categorical,很简单只需要 调用astype

food_cat=df['foods'].astype('category')
food_cat

python之高阶pandas的使用(一)

可以看到它的dtype变成category了 ,这个food_cat就是pandas.Categorical的实例

type(food_cat.values)

python之高阶pandas的使用(一)

每一个Categorical对象都拥有categories和codes属性:

c=food_cat.values
c.categories
c.codes

python之高阶pandas的使用(一)

python之高阶pandas的使用(一)

(2)直接生成

除了将df的某一列转换,也可以直接生成category格式的数据,如:

cate=pd.Categorical(['foo','bar','foo','baz','bar'])
cate

python之高阶pandas的使用(一)

(3) 函数构造

还可以根据已有的种类和编码,利用 from_codes函数构造,如:

cate1=['bar','lius','zoo']
codes=[0,0,1,2,0,2]
my_cate1=pd.Categorical.from_codes(codes,cate1)
my_cate1

python之高阶pandas的使用(一)

使用 Categorical对象进行计算

假如有一些随机数字数据使用pandas.qcut分箱函数,结果会返回pandas.Categorical

np.random.seed(300)
draws=np.random.randn(1000)
draws[:5]

python之高阶pandas的使用(一)

PS:

numpy.random.rand(d0,d1,…,dn)

  • rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
  • dn表格每个维度
  • 返回值为指定维度的array

numpy.random.randn(d0,d1,…,dn)

  • randn函数返回一个或一组样本,具有标准正态分布。
  • dn表格每个维度
  • 返回值为指定维度的array

qcut中的数据都是服从正态分布的,所以这里用randn

计算上面数据的四分位数 ,如果不指定labels,也就是说每个箱体都没有名字,那么只好把箱体展现出来,即显示每个箱体的两个临界值

bins=pd.qcut(draws,4)  #将数据均匀分成四份
bins

python之高阶pandas的使用(一)

如果指定,如下:

bins=pd.cut(draws,4,labels=['Q1','Q2','Q3','Q4'])
bins
bins.codes[:10]  #查看前10个编码表

python之高阶pandas的使用(一)

python之高阶pandas的使用(一)

使用category类型数据的好处是可以大量减少空间内存的浪费,试想看字符串数据转变为有0、1、2等的数字编码的数据,是不是轻松很多呢

draws=pd.Series(np.random.randn(100000))
labels=pd.Series(['abc','thy','awe','thr']*(100000//4))
labels

python之高阶pandas的使用(一)

类别转换

cate=labels.astype('category')
cate

python之高阶pandas的使用(一)

可以看到,内存占用明显小了许多 ,这是因为底层算法使用了基于整数代码的数组而不是字符串数组。

python之高阶pandas的使用(一)

Original: https://blog.csdn.net/KK_1657654189/article/details/122576634
Author: 咩咩_10538769
Title: python之高阶pandas的使用(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/752489/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 1.15 通过某个字段将记录分组

    您有一个词典或一系列实例,然后希望根据特定字段对迭代访问进行分组。 [En] You have a dictionary or a sequence of instances, a…

    Python 2023年5月24日
    068
  • 【Web开发】Python实现Web服务器(Flask测试,cesium.js/echarts.js/three.js)

    🍺Web服务器系列相关文章编写如下🍺: 🎈【Web开发】Node.js实现Web服务器(http模块)🎈 🎈【Web开发】Node.js实现Web服务器(express模块)🎈 🎈…

    Python 2023年8月12日
    057
  • 异步FIFO总结+Verilog实现

    异步FIFO简介 异步FIFO(First In First Out)可以很好解决多比特数据跨时钟域的数据传输与同步问题。异步FIFO的作用就像一个蓄水池,用于调节上下游水量。 F…

    Python 2023年6月3日
    082
  • Pytest—-如何在失败N个用例后停止执行

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

    Python 2023年9月11日
    046
  • Top K问题

    1、题目 给定一个长度为 N N N 的无序数组 a r r arr a rr,和一个正数 k ( k ≤ N ) k(k \le N)k (k ≤N ),返回前 k k k 个最…

    Python 2023年9月29日
    041
  • Pandas入门 笔记(二)

    Pandas入门 笔记(二) 3.DataFrame 对象 3.1图解DataFrame对象 图 3.1 DataFrame结构DataFrame是一个二维表数据结构,即由行列数据…

    Python 2023年8月17日
    074
  • 数据分析实战<一>脑电(EEG)分析

    这两天需要对预实验的脑电进行一个分类,在这里记录一下流程 脑电分析系列文章mne官网mne教程随机森林分类Python 多因素方差分析 文章目录 1. 脑电数据的处理 * 1.1 …

    Python 2023年9月16日
    044
  • python基于scrapy框架爬取数据并写入到MySQL和本地

    目录 1.安装scrapy 2.创建项目 3.工程目录结构 4.工程目录结构详情 5.创建爬虫文件 6.编写对应的代码在爬虫文件中 7.执行工程 8.scrapy数据解析 9.持久…

    Python 2023年10月1日
    052
  • Django分页器

    一、django框架分页器 1、概述 ​ 分页,就是当我们在页面中显示一些信息列表,内容过多,一个页面显示不完,需要分成多个页面进行显示时,使用的技术就是分页技术。 ​ 在djan…

    Python 2023年8月5日
    036
  • Flask 框架:运用Echarts绘制图形

    echarts是百度推出的一款开源的基于 JavaScript的可视化图表库,该开发库目前发展非常不错,且支持各类图形的绘制可定制程度高,Echarts绘图库同样可以与 Flask…

    Python 2023年10月20日
    054
  • 【k哥爬虫普法】爬取数据是否一定构成不正当竞争?

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了”K哥爬虫普法”专栏,本栏目通过对真实案例的分析,旨在提高广…

    Python 2023年10月30日
    056
  • java 删除组键_从组中删除Sprite

    我正在玩游戏,到目前为止角色可以跳跃,奔跑,用剑和弓攻击,我可以在他身边产生蛇,追逐他 . 现在我希望玩家能够攻击蛇并让它死亡/消失 . 我通过产生一个精灵(attack_area…

    Python 2023年9月25日
    055
  • groupby分组聚合和运算

    本文是对《利用Python进行数据分析》中关于groupby进行分组聚合和运算的一个回顾性总结,整体而言,在过去的一年的工作中,用到groupby的场景还是蛮多的,尤其是利用它与相…

    Python 2023年8月18日
    056
  • Python Flask-RESTPlus 工程化实践

    本指南将逐步介绍构建用于测试、开发和生产环境的 Flask RESTPlus Web 应用程序的方法。 将使用基于 Linux 的操作系统(Ubuntu),但是大多数步骤都可以在 …

    Python 2023年8月13日
    074
  • Istio(十三):Istio项目实际案例——Online Boutique

    一.模块概览 二.系统环境 三.创建Kubernetes(k8s)集群 3.1 创建Kubernetes(k8s)集群 3.2 Kubernetes集群环境 四.安装istio 4…

    Python 2023年10月16日
    061
  • numpy中的concatenate和pandas中的concat函数

    concatenate功能:数组拼接concat功能:数组拼接 1、numpy.concatenate() numpy.concatenate((a1, a2, …),…

    Python 2023年8月18日
    056
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球