Pandas知识点-索引和切片操作
Pandas知识点-索引和切片操作
索引和切片操作是最基本最常用的数据处理操作,Pandas中的索引和切片操作基于Python的语言特性,支持类似于numpy中的操作,也可以使用行标签、列标签以及行标签与列标签的组合来进行索引和切片操作。
本文使用的数据来源于网易财经,具体下载方式可以参考:https://blog.csdn.net/weixin_43790276/article/details/113923039。
前面介绍DataFrame和Series的文章中,代码是在Pycharm中编写的,本文和后面介绍Pandas的文章,代码会优先在Jupyter Notebook中编写。Jupyter Notebook的安装可以参考:https://blog.csdn.net/weixin_43790276/article/details/108927770。
一、数据读取
数据文件是600519.csv,将此文件放到代码同级目录下,从文件中读取出数据。
为了避免数据量太大,只取了前5行数据。查看读取的数据,列还是很多,为了让数据再精简一点,接下来将后面几列删除。默认的行索引是数值索引,为了方便后面演示索引操作,设置日期为索引。
处理后的数据如上图,这样看起来简洁了很多。
二、读取一列数据或一行数据
1. 读取一列数据
获取DataFrame中的一列数据有两种方式,第一种是用 data['列索引'] ,如 data['收盘价'] 可以获取收盘价这一列的数据。第二种是 data.列索引 的方式,如 data.收盘价 与 data['收盘价'] 的结果相同。
第一种方式是通用的方式,对于任意DataFrame都适用。第二种方式除了支持英文的索引名,也支持中文的索引名,但是如果英文的索引名与Python关键字(如class,list)同名,会报错,只能用第一种方式来取数据。
2. 读取一行数据
获取DataFrame中的一行数据时,不能直接用 data['行索引'] 或 data.行索引 的方式。
获取行数据也有两种方式,需要借助loc属性或iloc属性。loc属性基于行索引名获取数据,用法为 data.loc['行索引'] ,如 data.loc['2021-02-19'] 可以获取2021年2月19日的交易数据。iloc属性基于数值索引获取数据,用法为 data.iloc[数值] ,如 data.iloc[0] 是获取DataFrame中的第一行数据,与 data.loc['2021-02-19'] 结果相同。
三、读取指定位置的数据
Pandas中获取指定位置数据的索引方式默认是“先列后行”,这与numpy中ndarray的索引方式“先行后列”是相反的。在Pandas中,取数据的逻辑通常是先获取某一列数据,然后再取这列数据中的某个数据,所以默认采用了“先列后行”的方式,如果顺序反了会报错。
除了用“先列后行”的方式获取数据,如果想用“先行后列”的方式获取数据,可以借助loc属性或iloc属性来实现。loc属性是基于索引名来获取数据的,在loc中的行索引和列索引都要使用索引名,iloc属性是基于数值索引来获取数据的,在iloc中的行索引和列索引都要使用数值索引。同时,loc属性和iloc属性都只支持“先行后列”,顺序不能反。
四、DataFrame的索引转换
在使用loc属性和iloc属性时,行索引和列索引必须同时为索引名或同时为数值索引,所以,经常需要对索引名和数值索引互相转换。
使用DataFrame的index属性和columns属性可以得到行索引和列索引,在后面传入对应的数值就可以将数值索引转换成索引名。链式调用index属性和columns属性的get_indexer()方法,就可以将索引名转换成数值索引,get_indexer()中传入需要转换的索引名列表,即使只转换一个索引名,也要用列表的方式传入。
如果需要同时转换多个索引名,可以在列表中添加,列表中的顺序可以不遵守index和columns的先后顺序,返回结果是一一对应的数值索引数组。
五、切片
DataFrame的切片操作也要使用loc属性和iloc属性,不能直接用 data[:][:] 或 data[:, :] 的方式。loc中传入需要切片的行索引和列索引的索引名,iloc中传入需要切片的行索引和列索引的数值索引范围。
使用iloc进行切片操作时,切片规则与Python基本的切片规则相同,传入的切片索引是左闭右开的(包含起始值,不包含结束值)。
上面的索引互相转换方法,可以灵活地在切片中使用,在使用loc时将数值索引转换成索引名,在使用iloc时将索引名转换成数值索引。
以上就是Pandas中的索引和切片基本操作介绍,如果需要获取数据和代码,可以扫码关注公众号“Python碎片”,然后在后台回复“pandas03”关键字获取本文代码和数据。
Pandas知识点-索引和切片操作相关推荐
- 【TensorFlow2.0】(3) 索引与切片操作
各位同学好,今天我和大家分享一下TensorFlow2.0中索引与切片.内容有: (1) 给定每一维度的索引来获取数据:(2) 切片索引:(3) 省略号应用:(4) tf.gather() 方法:(5 ...
- Pandas时间索引的骚操作
当DataFrame的索引为时间对象时,可以很方便的进行数据的筛选. 时间范围生成 #生成时间范围 pd.date_range('2010-01-01','2010-01-08') >>& ...
- 数据分析工具Pandas(2):Pandas的索引操作
数据分析工具Pandas(1):Pandas的数据结构 数据分析工具Pandas(2):Pandas的索引操作 Pandas的索引操作 索引对象Index 1. Series和DataFrame中的索 ...
- dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...
一.为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类 ...
- pandas分层索引(层级索引、MultiIndex)的创建、取值、切片、统计计算以及普通索引和层级索引的转换方法
pandas分层索引(层级索引.MultiIndex)的创建.取值.切片.统计计算以及普通索引和层级索引的转换方法 @TOC 多层索引的Series 层级索引的创建 层级索引(multi index) ...
- c++没有终结符的多行输入如何停止_如何使用iloc和loc 对Pandas Dataframe进行索引和切片...
在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和索引. 一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开 ...
- dataframe iloc_如何使用iloc和loc 对Pandas Dataframe进行索引和切片
在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和索引. 一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开 ...
- Pandas知识点-添加操作append
Pandas知识点-添加操作append 在Pandas中,append()方法用于将一个或多个DataFrame或Series添加到DataFrame中.append()方法也可以用于合并操作,本文 ...
- Pandas知识点-合并操作combine
Pandas知识点-合并操作combine combine是联合的意思,在Pandas中,combine()方法也是一种实现合并的方法,本文介绍combine()方法的用法. 一.combine_fi ...
最新文章
- gcc8之前,coredump文件无法显示正确的函数调用栈信息
- Git clone时出现Please make sure you have the correct access rights and the repository exists.问题已解决。
- 34.对象 GC,GC属性,影响GC的因素,GC步骤,GC算法,安全区/安全区域,新生代,老年代等介绍
- python3安装pymysql_Python3 MySQL 数据库连接 - PyMySQL 驱动
- GitHub标星3.6k | 给AI一张高清照片,分分钟还你3D人体模型
- apache正向代理配置
- Oracle认证体系的重大变化,你需要知道这些...
- 用Unity的Animation播放Animator动画Clip
- RabbitMQ基础进阶教程
- CVPR学习(一):CVPR2019-人脸方向
- java密码验证代码_java用户名密码验证示例代码分享
- jupyter notebook使用基础及其快捷键,包括对文档操作、cell操作、快捷键、markdown
- 互联网公司裁员还有秘密?我知道了!
- LA 3708 - Graveyard 墓地雕塑
- 卷积神经网络 svm分类器_使用卷积神经网络的狗品种分类器
- python分行输入_python换行输入
- 第十七章 Caché 定义和使用类查询
- 智能手机是通用计算机吗,手机电脑通用 你可能需要一款无线硬盘
- 矩阵键盘简易计算机设计报告,矩阵键盘设计实验报告.doc
- PMBOK第七版免费下载
热门文章
- Apache Kudu 加速对频繁更新数据的分析
- linux命令返回值的妙用
- Bzoj4822 [Cqoi2017]老C的任务
- elasticsearch Java API 之Delete By Query API
- 自定义UISwitch
- ext/iconv/.libs/iconv.o: In function `_php_iconv_strlen'
- 面试官系统精讲Java源码及大厂真题 - 37 ThreadPoolExecutor 源码解析
- mariadb 创建用户及授权
- oracle自定义存储过程:删除表(无论表是否存在)和检测表是否存在
- C#算法设计排序篇之02-快速排序(附带动画演示程序)