Pandas中Series和DataFrame的索引
在对Series对象和DataFrame对象进行索引的时候要明确这么一个概念:是使用下标进行索引,还是使用关键字进行索引。比如list进行索引的时候使用的是下标,而dict索引的时候使用的是关键字。
使用下标索引的时候下标总是从0开始的,而且索引值总是数字。而使用关键字进行索引,关键字是key里面的值,既可以是数字,也可以是字符串等。
Series对象介绍:
Series对象是由索引index和值values组成的,一个index对应一个value。其中index是pandas中的Index对象。values是numpy中的数组对象。
import pandas as pd
s1 = pd.Series([2,3,4,5], index=['a', 'b', 'c', 'd'])
print(s1)
结果:
a 2
b 3
c 4
d 5
dtype: int64 print(s1.index)
结果:
Index(['a', 'b', 'c', 'd'], dtype='object') print(s1.values)
结果:
[2 3 4 5]
如何对Series对象进行索引?
1:使用index中的值进行索引
print(s1['a'])
结果:
2 print(s1[['a','d']])
结果:
a 2
d 5
dtype: int64 print(s1['b':'d'])
结果(注意,切片索引保存最后一个值):
b 3
c 4
d 5
dtype: int64
2:使用下标进行索引
print(s1[0])
结果:
2 print(s1[[0,3]])
结果:
a 2
d 5
dtype: int64 print(s1[1:3])
结果(注意:这里和上面不同的是不保存最后一个值,与正常索引相同):
b 3
c 4
dtype: int64
3:特殊情况:
上面的index为字符串,假如index为数字,这个时候进行索引是按照index值进行还是按照下标进行?
s1 = pd.Series([2,3,4,5], index=[1,2,3,4])
print(s1[2])
结果:
3
print(s1[0]) 会报错 print(s1[[2,4]])
结果:
2 3
4 5
dtype: int64 print(s1[1:3])
结果:
2 3
3 4
dtype: int64
可以看出来,当index为整数的时候,那么前两种选择是使用index的值进行索引, 而后一种切片选择使用的是下标进行索引。
4:使用布尔Series进行索引
使用布尔Series进行索引的时候,其实是要求布尔Series和我们的索引对象有相同的index。
s1 = pd.Series([2,3,4,5], index=['a', 'b', 'c', 'd']
print(s1 > 3)
结果(这是一个bool Series):
a False
b False
c True
d True
dtype: bool print(s1[s1 > 3])
结果(只需要把bool Series 传入Series就可以实现索引):
c 4
d 5
dtype: int64
5:使用Index对象来进行索引
使用Index对象进行索引的时候,和使用值索引没有本质的区别。因为Index里面也存入了很多值,可以把Index看做一个list。
DataFrame对象介绍:
DataFrame对象是一个由行列组成的表。DataFrame中行由columns组成,列由index组成,它们都是Index对象。它的值还是numpy数组。
data = {'name':['ming', 'hong', 'gang', 'tian'], 'age':[12, 13, 14, 20], 'score':[80.3, 88.2, 90, 99.9]}
df1 = pd.DataFrame(data)
print(df1.index)
结果:
RangeIndex(start=0, stop=4, step=1)
print(df1.columns)
结果:
Index(['age', 'name', 'score'], dtype='object')
print(df1.values)
结果:
[[12 'ming' 80.3]
[13 'hong' 88.2]
[14 'gang' 90.0]
[20 'tian' 99.9]]
如何对DataFrame对象进行索引
1:使用columns的值对列进行索引
直接使用columns中的值进行索引,得到的是一列或者是多列的值
print(df1['name'])
结果:
0 ming
1 hong
2 gang
3 tian
Name: name, dtype: object print(df1[['name','age']])
结果:
name age
0 ming 12
1 hong 13
2 gang 14
3 tian 20
注意:不可以直接使用下标对列进行索引,除非该columns当中包含该值。如下面的操作是错误的
print(df1[0])
结果: 错误
2:切片或者布尔Series对行进行索引
使用切片索引,或者布尔类型Series进行索引:
print(df1[0:3])
使用切片进行选择,结果:
age name score
0 12 ming 80.3
1 13 hong 88.2
2 14 gang 90.0 print(df1[ df1['age'] > 13 ])
使用布尔类型Series进行索引,其实还是要求布尔Series和DataFrame有相同的index,结果:
age name score
2 14 gang 90.0
3 20 tian 99.9
3:使用loc和iloc进行索引
本质上loc是用index和columns当中的值进行索引,而iloc是不理会index和columns当中的值的,永远都是用从0开始的下标进行索引。所以当你搞懂这句话的时候,下面的索引就会变得非常简单:
print(df1.loc[3])
结果:
name hong
score 88.2
Name: 3, dtype: object print(df1.loc[:,'age'])
结果:
1 12
3 13
4 14
5 20
Name: age, dtype: int64 print(df1.iloc[3])
结果:
age 20
name tian
score 99.9
Name: 5, dtype: object print(df1.iloc[:,1])
结果:
1 ming
3 hong
4 gang
5 tian
Name: name, dtype: object
Pandas中Series和DataFrame的索引的更多相关文章
- Python之Pandas中Series、DataFrame
Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...
- Python之Pandas中Series、DataFrame实践
Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...
- [Python] Pandas 中 Series 和 DataFrame 的用法笔记
目录 1. Series对象 自定义元素的行标签 使用Series对象定义基于字典创建数据结构 2. DataFrame对象 自定义行标签和列标签 使用DataFrame对象可以基于字典创建数据结构 ...
- pandas中series和dataframe之间的区别
series结构有索引,和列名组成,如果没有,那么程序会自动赋名为None series的索引名具有唯一性,索引可以数字和字符,系统会自动将他们转化为一个类型object. dataframe由索引和 ...
- Pandas中Series与Dataframe的区别
1. Series Series通俗来讲就是一维数组,索引(index)为每个元素的下标,值(value)为下标对应的值 例如: arr = ['Tom', 'Nancy', 'Jack', 'Ton ...
- Pandas中Series与Dataframe的初始化
(一)Series初始化 1.通过列表,index自动生成 se = pd.Series(['Tom', 'Nancy', 'Jack', 'Tony']) print(se) 2.通过列表,指定in ...
- pandas学习series和dataframe基础
PANDAS 的使用 一.什么是pandas? 1.python Data Analysis Library 或pandas 是基于numpy的一种工具,该工具是为了解决数据分析人物而创建的. 2.p ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- pandas中的数据结构-DataFrame
pandas中的数据结构-DataFrame DataFrame是什么? 表格型的数据结构 DataFrame 是一个表格型的数据类型,每列值类型可以不同 DataFrame 既有行索引.也有列索引 ...
随机推荐
- wget下载整个网站或特定目录
下载整个网站或特定目录 wget -c -k -r -np -p http://www.yoursite.com/path -c, –continue 断点下载 -k, –convert-links ...
- 【Python学习】字符编码
先说两个基础知识. (1)计算机内部,数据是由0,1组成的: (2)计算机最小的数据单位,就是一个二进制单位即bit,接下来就是8个二进制单位表示一个字节(Byte). 1 ASCII码 ASCII码 ...
- 64_r2
ruby-gnomecanvas2-0.90.4-7.fc26.3.x86_64.rpm 13-Feb-2017 08:00 75794 ruby-gnomecanvas2-devel-0.90.4- ...
- logging模块配置笔记
logging模块配置笔记 log文件的路径 #判断在当前的目录下是否有一个logs文件夹.没有则创建 log_dir = os.path.dirname(os.path.dirname(__file ...
- spring中的任务调度Quartz
Spring 整合 Quartz 任务调度 主要有两种方式. Quartz的官网:http://www.quartz-scheduler.org/ 这两种只是一些配置文件简单配置就OK了,但是根本无法 ...
- google浏览器中,使用clockwork 来调试
参考:https://laravel-china.org/courses/laravel-package/1976/debugging-tool-under-chrome-itsgoingdclock ...
- 常用的Oracle的doc命令
常用的Oracle的doc命令 1.连接数据库 普通用户连接数据库: conn scott/tiger --(默认的用户名/密码).conn 即"connection"连接数据库的 ...
- HDU 2544 最短路(floyd+bellman-ford+spfa+dijkstra队列优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目大意:找点1到点n的最短路(无向图) 练一下最短路... dijkstra+队列优化: #i ...
- csu 1770按钮控制彩灯实验(树状数组)
1770: 按钮控制彩灯实验 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 194 Solved: 65[Submit][Status][Web Bo ...
- windows 下安装 nginx + php
1. 下载软件 需要的软件有nginx,php,mysql(如不需要可不安装) nginx.org,www.php.net上面有得下 全部解压出来 php基本不用做任何修改(下载直接解压版本的) 用c ...