pandas 学习 第8篇:Index 对象 - (创建、转换、排序)
Index对象负责管理轴标签、轴名称等元数据,是一个不可修改的、有序的、可以索引的ndarry对象。在构建Sereis或DataFrame时,所用到的任何数据或者array-like的标签,都会转换为一个Index对象。Index对象是一个从索引到数据值的映射,当数据是一列时,Index是列索引;当数据是一行数据时,Index是行索引。
一,基础函数
用于创建索引的最基础的构造函数:
pandas.Index(data,dtype=object,name)
参数注释:
- data:类似于一维数组的对象
- dtype:用于设置索引元素的类型,默认值是object
- name:索引的名称,默认值是Index
举个例子,创建一个整数索引:
>>> pd.Index([1, 2, 3])
Int64Index([1, 2, 3], dtype='int64')
索引是一个ndarray对象,元素的类型相同,每一个Index对象,常用的属性有:
- values:索引的值
- array:以数组形式返回索引元素的值
- dtype:索引元素的数据类型
- name:索引的名称属性
- shape:索引的形状
二,索引的转换
索引是一个ndarray对象,不仅元素类型可以转换,其对象本身也可以强转为其他like-array类型,比如list、Series和DataFrame。
1,强转索引值的类型
显式把索引元素的类型强制转换成其他数据类型:
Index.astype(self, dtype, copy=True)
2,把索引转换成list
list是由索引的值构成的:
Index.to_list(self)
3,把索引转换成Series
Series的索引值和数据值相同,是由原索引的数据值构成的:
Index.to_series(self, index=None, name=None)
参数index 表示新建Sereis的索引,默认值是None,表示新建Sereis的索引就是原索引。
>>> idx = pd.Index(['Ant', 'Bear', 'Cow'], name='animal')
>>> idx.to_series()
animal
Ant Ant
Bear Bear
Cow Cow
Name: animal, dtype: object
4,把索引转换成DataFrame
创建一个新的DataFrame对象,列的值是由索引值构成的,默认情况下,新DataFrame的索引就是原索引:
Index.to_frame(self, index=True, name=None)
参数index表示是否把原索引作为新创建的DataFrame对象的索引,默认值是True。
>>> idx = pd.Index(['Ant', 'Bear', 'Cow'], name='animal')
>>> idx.to_frame()
animal
animal
Ant Ant
Bear Bear
Cow Cow
5,把索引展开为ndarray对象
该方法和numpy.ravel() 相同,把Index对象展开为一维的ndarray对象:
Index.ravel(self, order='C')
三,索引的排序
按照索引的值进行排序,但是返回索引值的下标,参数 *args和 **kwargs都是传递给numpy.ndarray.argsort函数的参数。
Index.argsort(self, *args, **kwargs)
按照索引的值进行排序,返回排序的副本,参数return_indexer 表示是否返回索引值的下标:
Index.sort_values(self, return_indexer=False, ascending=True)
举个例子,有如下索引:
>>> idx = pd.Index(['b', 'a', 'd', 'c'])
Index(['b', 'a', 'd', 'c'], dtype='object')
按照索引值进行排序,返回排序索引的下标:
>>> order = idx.argsort()
>>> order
array([1, 0, 3, 2])
通过下标来查看索引的排序值:
>>> idx[order]
Index(['a', 'b', 'c', 'd'], dtype='object')
当然,也可以直接返回已排序的索引:
>>> idx.sort_values()
Index(['a', 'b', 'c', 'd'], dtype='object')
如果要返回已排序的索引和对应的下标,需要设置参数return_indexer=True:
>>> idx.sort_values(return_indexer=True)
(Index(['a', 'b', 'c', 'd'], dtype='object'), array([1, 0, 3, 2], dtype=int64))
参考文档:
pandas 学习 第8篇:Index 对象 - (创建、转换、排序)的更多相关文章
- pandas 学习 第十一篇:处理缺失值
Pandas中的缺失值是指nan.None和NaT.如果需要把inf 和 -inf视为缺失值,需要设置 pandas的选项: pandas.options.mode.use_inf_as_na = T ...
- pandas 学习 第14篇:索引和选择数据
数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...
- pandas 学习 第2篇:Series -(创建,属性,转换和索引)
序列(Series)是由一组数据(各种NumPy数据类型),以及一组与之相关的数据标签(索引)组成,序列不要求数据类型是相同的. 序列是一个一维数组,只有一个维度(或称作轴)是行(row),在访问序列 ...
- pandas 学习 第3篇:Series - 数据处理(应用、分组、滚动、扩展、指数加权移动平均)
序列内置一些函数,用于循环对序列的元素执行操作. 一,应用和转换函数 应用apply 对序列的各个元素应用函数: Series.apply(self, func, convert_dtype=True ...
- pandas 学习 第1篇:pandas基础 - 数据结构和数据类型
pandas是基于NumPy构建的模块,含有使数据分析更快更简单的操作工具和数据结构,是数据分析必不可少的五个包之一.pandas包含序列Series和数据框DataFrame两种最主要数据结构,索引 ...
- Pandas 学习 第9篇:DataFrame - 数据的输入输出
常用的数据存储介质是数据库和csv文件,pandas模块包含了相应的API对数据进行输入和输出: 对于格式化的平面文件:read_table() 对于csv文件:read_csv().to_csv() ...
- JS学习笔记-OO疑问之对象创建
问一.引入工厂,解决反复代码 前面已经提到,JS中创建对象的方法,不难发现,主要的创建方法中,创建一个对象还算简单,假设创建多个类似的对象的话就会产生大量反复的代码. 解决:工厂模式方法(加入一个专门 ...
- pandas 学习 第5篇:DataFrame - 访问数据框
数据框是用于存储数据的二维结构,分为行和列,一行和一列的交叉位置是一个cell,该cell的位置是由行索引和列索引共同确定的.可以通过at/iat,或loc/iloc属性来访问数据框的元素,该属性后跟 ...
- pandas 学习 第7篇:DataFrame - 数据处理(应用、操作索引、重命名、合并)
DataFrame的这些操作和Series很相似,这里简单介绍一下. 一,应用和应用映射 apply()函数对每个轴应用一个函数,applymap()函数对每个元素应用一个函数: DataFrame. ...
随机推荐
- 【bzoj4555】[Tjoi2016&Heoi2016]求和(NTT+第二类斯特林数)
传送门 题意: 求 \[ f(n)=\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix} i \\ j \end{Bmatrix}2^jj! \] 思路: 直接将第二类斯特林 ...
- 华为hcnp r&s考试一共有三门,R&S-IERS,R&S-IENP,R&S-IEEP
大纲1.HCNP-R&S-IEEP V2.0考试大纲 考试内容:HCNP-R&S-IEEP考试覆盖对企业网络的规划.设计.实施.维护.排障.优化以及网络割接等. 知识点: 网络规划:1 ...
- String对象及正则表达式
1,String和string还是有区别的,一个就是用双引号或单引号包括起来的数据就是字符串,另一个本质是数组多个字符串组成的只读字符数组: 2,你说string他是数组吧,他和数组还是有点区别的,他 ...
- Metasploit从文件中读取目标地址
本文简单介绍如何使用Metasploit从文件中读取目标地址,来执行检测. 以检测MS17-010漏洞为例,在设定RHOSTS参数时,可设定目标地址范围和CIDR地址块,设定单个IP的目标也是可以的. ...
- 朝花夕拾《精通CSS》二、选择器 & 层叠
一.背景 翻出我4年前看的<精通CSS>一书,可惜当初没有整理读书笔记的习惯,最近又很少写前端,遂很多东西.知识点遗忘了,恰且现在 css 也有些变化和进步,遂一起打包整理,输出成几篇 b ...
- python - 操作excel表格
说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通过几个excel表格去交叉比对员工是否有旷工或迟到,工作量大而且容易出错. 这时候it屌丝的机会来啦,花了一天时间给妹子撸了一个自动化脚本. 1. ...
- 传统jdbc存在的问题总结
1.数据库连接创建.释放频繁造成系统资源浪费,影响系统性能,可使用数据库连接池解决此问题. 2.sql语句中在代码中硬编码,代码不易维护,sql变动需要改变java代码. 3.使用preparedSt ...
- ZooKeeper(六):watch机制的原理与实现
因为ZK有watch机制,可以随时发现一些数据的变化,从而达到数据的及时性. ZK的所有读操作都可以设置watch监视点: getData, getChildren, exists. 写操作则是不能设 ...
- 高强度学习训练第十四天总结:HashMap
HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一. JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap ...
- ABP入门教程7 - 基础设施层更新数据库
点这里进入ABP入门教程目录 设置数据库 在基础设施层(即JD.CRS.EntityFrameworkCore)打开数据库环境设置 JD.CRS.EntityFrameworkCore/EntityF ...