比较系统的学习 pandas(5)

news2024/11/19 20:23:15

pandas 常见的高级操作

1、进行复杂查询

由于不好描述,就举几个栗子吧,不明白的可以私聊我

1、pnadas 支持逻辑计算与位运算

对DataFrame的一列进行逻辑计,会产生一个对应的由布尔值组成的Series,真假值由此位上的数据 是否满足逻辑表达式决定。

data["语文"] > 60

data["数学"] == 100

2、根据逻辑运算进行筛选数据

切片([])、.loc[]和.iloc[]均支持的逻辑表达式。

data[data['语文'] == 150]
data[~(data['语文'] == 150)]  #语文值不等于150的 
data[data["name"] == '慕晨风'] # 姓名为慕晨风
df[data["语文"] > data["数学"]


# 表达式与切片一致
data.loc[data["语文"] > 90, '语文':] # 语文值大于90,且只显示语文
data.loc[(data["语文"] > 80) & (data["数学"] > 120)] # and关系
data.loc[(data["语文"] > 90) | (data["英语"] < 90)] # or关系
data.loc[data["语文"] == 120]  
data.loc[data['语文'] > 90, '语文':] # 语文大于90,显示语文及其后所有列

注意 : 在进行或(|)、与(&)、非(~)运算时,各个独 立逻辑表达式需要用括号括起来

3、进行函数筛选

可以在表达式处使用lambda函数,默认变量是其操作的对象。如果 操作的对象是一个DataFrame,那么变量就是这个DataFrame;如果是一 个Series,那么就是这个Series

data[lambda data: data['语文'] == 120] # 语文为120

data.loc[:, lambda data: [i for i in data["name"] if '慕' in i]] # 返回 name列中带有 慕 字的名字列表


比较函数(一般不使用)

data.ne() # 不等于 !=
data.le() # 小于等于 <=
data.lt() # 小于 <
data.ge() # 大于等于 >=
data.gt() # 大于 >
data.eq() #等于


eg:   data[data["语文"].eq(150)]



data.isin()

data.isin()   #判断数据是否包含指定内容

data[data.team.isin(['A','B'])] # 包含A、B两组
data[data.isin({'team': ['C', 'D'], 'Q1':[100,120]})] # 复杂查询,其他值为NaN

data.query()

data.query()使用布尔表达式查询DataFrame的列,表达式是一个 字符串,类似于SQL中的where从句,不过它相当灵活

data.query('语文 + 数学 > 180')
df.query('语文 == 英语')

data.filter() 

data.filter()可以对行名和列名进行筛选,支持模糊匹配、正则表达式

data.filter(regex='1$', axis=0) # 正则,索引名以1结尾

4、根据数据类型查询

Pandas提供了一个按列数据类型筛选的功能 df.select_dtypes(include=None, exclude=None),它可以指定包含和不包含 的数据类型,如果只有一个类型,传入字符;如果有多个类型,传入列表.

如果没有满足条件的数据,会返回一个仅有索引的DataFrame。

data.select_dtypes(include=['float64']) # 选择float64型数据

data.select_dtypes(include='bool')

data.select_dtypes(include=['number']) # 只取数字型

data.select_dtypes(exclude=['int']) # 排除int类型

data.select_dtypes(exclude=['datetime64'])

2、数据类型转换

在开始数据分析前,有时需要为数据分配好合适的类型,这样才能 够高效地处理数据

# 对所有字段指定统一类型
data= pd.DataFrame(data, dtype='float32')
# 对每个字段分别指定
data = pd.read_excel(data.xlsx, dtype={'name': 'string', 'score': 'int32'})

1、指定数据DataFrame或Series类型

# 按大体类型推定
m = ['1', 2, 3]

s = pd.to_numeric(s) # 转成数字

pd.to_datetime(m) # 转成时间

pd.to_timedelta(m) # 转成时间差

pd.to_datetime(m, errors='coerce') # 错误处理

pd.to_numeric(m, errors='ignore')

pd.to_numeric(m errors='coerce').fillna(0) # 兜底填充

pd.to_datetime(data[['year', 'month', 'day']]) # 组合成日期

注意 : pd.to_datetime() 很重要

细讲pd.to_datetime() 函数

pd.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=None, box=True, format=None, exact=True, unit=None, infer_datetime_format=False, origin='unix', cache=True)

常用参数解析:

arg:int,float,str,datetime,list,tuple,1-d数组,Series,DataFrame / dict-like,要转换为日期时间的对象

errors:{'ignore','raise','coerce'},默认为'raise'

        如果为“ raise”,则无效的解析将引发异常

        如果为“coerce”,则将无效解析设置为NaT

        如果为“ ignore”,则无效的解析将返回输入

format:str,格式,default None,解析时间的strftime,eg :   “%d /%m /%Y”。

详情https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

2、类型转换函数 astype()

一般都使用 astype()操作数据转换。

data.index.astype('int64') # 索引类型转换

data.astype('int32') # 所有数据转换为int32

data.astype({'列名1': 'int32'}) # 指定字段转指定类型

data.astype('int64', copy=False) # 不与原数据关联

data['name'].astype('object')  #name列转换为 object 类型

data["状态"].astype("bool")

s.astype('datetime64[ns]') #转化为时间类型

当数据的格式不具备转换为目标类型的条件时,需要先对数据进行 处理。例如"89.3%"是一个字符串,要转换为数字,要先去掉百分号:

# 将"89.3%"这样的文本转为浮点数
data.rate.apply(lambda x: x.replace('%', '')).astype('float')/10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArrayList的深入理解

ArrayList的源码解析1. 实例化无参构造器2. add&#xff08;&#xff09;方法2.1. add&#xff08;&#xff09;List的扩容3. get&#xff08;&#xff09;方法4. remove&#xff08;&#xff09;5. modCount 的作用(面试题)5. 手写简单List实现存储删除1. 实例化无参构造器 A…

Pandas 2.0 vs Polars:速度的全面对比

前几天的文章&#xff0c;我们已经简单的介绍过Pandas 和Polars的速度对比。刚刚发布的Pandas 2.0速度得到了显著的提升。但是本次测试发现NumPy数组上的一些基本操作仍然更快。并且Polars 0.17.0&#xff0c;也在上周发布&#xff0c;并且也提到了性能的改善&#xff0c;所以我…

Apple苹果开发者Certificates, Identifiers Profiles创建

1.创建Profile: 登陆Apple开发者账号,进入开发者后台,选择Profiles 然后点击Generate a Profile生成一个配置 选择配置类型 点击继续 选择APP ID 创建APP ID 注册一个新的APP id 选择应用类型,然后点击继续

两种事件处理模式:reactor/proactor

&#xff01;&#xff01;同步通常是reactor&#xff0c;异步通常是proactor reactor 要求主线程&#xff08;I/O处理单元&#xff09;只负责监听文件描述符上是否有事件发生&#xff0c;有的话就立即将该事件通知工作线程&#xff08;逻辑单元&#xff09;&#xff0c;将 so…

SpringBoot——单元测试实践总结

文章目录单元测试概念作用黑白盒黑盒测试白盒测试逻辑覆盖1、语句覆盖2、判定覆盖3、条件覆盖4、条件/判定覆盖5、条件组合覆盖6、路径覆盖SpringBoot工程单测介绍pom依赖注意&#xff1a;Idea结构创建路径创建类和方法Controller层单测被测代码测试代码Service层单测被测代码测…

springboot集成hadoop3.2.4HDFS

前言 记录springboot集成hadoop3.2.4版本&#xff0c;并且调用HDFS的相关接口&#xff0c;这里就不展示springboot工程的建立了&#xff0c;这个你们自己去建工程很多教程。 一、springboot配置文件修改 1.1 pom文件修改 <!-- hadoop依赖 --><dependency><gro…

【从零开始学Skynet】基础篇(八):简易留言板

这一篇我们要把网络编程和数据库操作结合起来&#xff0c;实现一个简单的留言板功能。 1、功能需求 如下图所示&#xff0c;客户端发送“set XXX”命令时&#xff0c;程序会把留 言“XXX”存入数据库&#xff0c;发送“get”命令时&#xff0c;程序会把整个留言板返回给客户端。…

怎么把视频转成mp3音频,下面有四个方法

你有没有遇到过这种情况&#xff0c;看了一部电影或者纪录片&#xff0c;里面的背景音乐或者对白让你很感动&#xff0c;但是我们只需要其中的音频部分&#xff0c;比如在手机上收听音乐或者创作自己的音频内容。这时候我们可以先把视频保存下来&#xff0c;然后通过视频转音频…

光耦继电器工作原理及优点概述

光耦继电器是一种电子元器件&#xff0c;也是固态继电器的一种&#xff0c;其主要作用是隔离输入与输出电路&#xff0c;用于保护或者控制电路的正常工作。 光耦继电器工作原理是利用光电转换器将外界信号转化为光信号&#xff0c;通过光纤传输到另一端&#xff0c;再由另一端的…

【C生万物】 数组篇

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; 前言&#xff1a; 这个专栏好久没更新了&#xff0c;今日诗兴大发&#xff0c;打算尽快完成这个专栏&#xff0c;这期讲数组。 目录 Part1:一维数组 1.创建 2.初始化 3.使用 4.在内存中的存储 Part2:二…

安卓开发学习记录(续)

文章目录十一、综合训练&#xff08;购物车功能&#xff09;十二、内容提供者Provider十一、综合训练&#xff08;购物车功能&#xff09; 实现功能&#xff1a; 手机商品页面展示&#xff0c;加入购物车功能&#xff0c;商品详情页面&#xff0c;清空购物车&#xff0c;删除购…

C++算法初级9——递归

C算法初级9——递归 文章目录C算法初级9——递归递归求阶乘递归求斐波那契数列递归&#xff0c;简单地来说&#xff0c;就是一个函数自己调用自己。函数f()就好像是工厂中生产零件的模板&#xff0c;每次我们调用函数f()的时候&#xff0c;都会依照模板生产一个新的零件&#x…

项目4:后台管理的开发和使用(前端)

项目4&#xff1a;后台管理的开发和使用&#xff08;前端&#xff09; 1.npm包管理器的基本学习 2.利用现成后台管理系统开发 3.后台管理系统的路由配置 4.后台管理系统的地址访问配置 5.前后端联调 6.完善积分等级的前端系统 7.对前端系统的全面分析&#xff08;Vue组件…

跳槽进阿里了,其实也没那么难...

对于很多没有学历优势的人来说&#xff0c;面试大厂是非常困难的&#xff0c;这对我而言&#xff0c;也是一样&#xff0c;出身于二本&#xff0c;原本以为就三点一线的生活度过一生&#xff0c;直到生活上的变故&#xff0c;才让我有了新的想法和目标&#xff0c;因此我这个二…

【C++ -模块一 常量变量、关键字、数据类型】

C 模块一C框架代码&#xff1a;第一个C程序&#xff0c;打印hello C &#xff01;代码注释&#xff1a;一 变量和常量&#xff1a;1.1变量变量创建语法&#xff1a;1.2 常量&#xff1a;不能被修改的数据&#xff08;1&#xff09; #define定义的宏常量&#xff1a;一般写在文件…

排序(3)之交换排序

目录 前言 交换排序 1.冒泡排序 1.1冒泡排序的实现 1.2 特性总结 2.快速排序 2.1hoare版本 2.2 挖坑法 2.3 前后指针版本 3.快速排序的优化 3.1 三数取中法 3.2 小区间优化 4.快速排序的非递归实现 前言 今天小编给大家带来交换排序的内容&#xff0c;对于交换排序…

C-关键字(下)

文章目录循环控制switch-case-break-defaultdo-while-forgetchar()break-continuegotovoidvoid*returnconstconst修饰变量const修饰数组const修饰指针指针补充const 修饰返回值volatilestruct柔型数组union联合体联合体空间开辟问题利用联合体的性质,判断机器是大端还是小端enu…

力扣javascript刷题343——动态规划之整数拆分

这几天有在开始投暑期实习的简历&#xff0c;可能确实是投的太晚了&#xff0c;好多厂都没有hc了&#xff0c;阿里简历面都没过&#xff08;感觉是kpi面试&#xff09;&#xff0c;被深深打击到了呜呜呜&#xff0c;花了两天整理情绪&#xff0c;重新出发&#xff0c;下篇文章针…

mysql 索引详解

mysql 索引索引分类1. 普通索引和唯一索引2. 单列索引和组合索引3. 全文索引4&#xff0e;空间索引操作使用索引1. 在已有表中添加索引2. 删除索引索引是一个单独存储在磁盘上的数据库结构&#xff0c;使用索引可以快速找出在某个或多个列中有一特定值的行&#xff0c;提高查询…

【C语言 -结构体 结构体声明、定义、初始化、结构体成员访问、结构体传参】

C语言 - 结构体声明、定义、初始化、结构体成员访问、结构体传参一 结构体类型的声明&#xff1a;声明格式&#xff1a;二 结构体的定义并初始化2.1用结构体创建&#xff08;定义&#xff09;结构体变量&#xff08;对象&#xff09;的两种方式&#xff1a;&#xff08;1&#…