3.2 Series对象
Pandas是Python数据分析重要的库,而Series和DataFrame是Pandas库中两个重要的对象,也是Pandas中两个重要的数据结构,如图3.8所示。
图3.8 Pandas两个重要的数据结构
本节将主要介绍Series对象。
3.2.1 图解Series对象
Series是Python的Pandas库中的一种数据结构,它类似一维数组,由一组数据以及与这组数据相关的标签(即索引)组成,或者仅有一组数据没有索引也可以创建一个简单的Series。Series可以存储整数、浮点数、字符串、Python对象等多种类型的数据。
例如,在成绩表(见图3.9)中包含了Series对象和DataFrame对象,其中“语文”“数学”“英语”3列中的每一列均是一个Series对象,而“语文”“数学”“英语”3列组成了一个DataFrame对象,如图3.10所示。
图3.9 原始数据(成绩表)
图3.10 图解Series
3.2.2 创建一个Series对象
创建Series对象主要使用Pandas的Series()方法,语法如下:
s=pd.Series(data,index=index)
参数说明:
data:表示数据,支持Python字典、多维数组、标量值(即只有大小,没有方向的量。也就是说,只是一个数值,如s=pd.Series(5))。
index:表示行标签(索引)。
返回值:Series对象。
说明
当data参数是多维数组时,index长度必须与data长度一致。如果没有指定index参数,则自动创建数值型索引(从0~data数据长度-1)。
【示例02】 在成绩表添加一列“物理”成绩。(示例位置:资源包\MR\Code\03\02)
创建一个Series对象,在成绩表中添加一列“物理”成绩。程序代码如下:
01 import pandas as pd 02 s1=pd.Series([88,60,75]) 03 print(s1)
运行程序,控制台输出结果如下:
0 88 1 60 2 75
上述举例,如果通过Pandas模块引入Series对象,那么就可以直接在程序中使用Series对象了。主要代码如下:
01 from pandas import Series 02 s1=Series([88,60,75])
3.2.3 手动设置Series索引
创建Series对象时会自动生成整数索引,默认值从0开始至数据长度减1。例如,3.2.1节举例中使用的就是默认索引,如0、1、2。除了使用默认索引,还可以通过index参数手动设置索引。
【示例03】 手动设置索引。(示例位置:资源包\MR\Code\03\03)
下面手动设置索引,将3.2.1节添加的“物理”成绩的索引设置为1、2、3,也可以是“明日同学”“高同学”“七月流火”。程序代码如下:
运行程序,控制台输出结果如下:
说明
上述结果中输出的dtype是DataFrame数据的数据类型,int为整型,后面的数字表示位数。
3.2.4 Series的索引
1.Series位置索引
位置索引是从0开始数,[0]是Series第一个数,[1]是Series第二个数,以此类推。
【示例04】 通过位置索引获取学生物理成绩。(示例位置:资源包\MR\Code\03\04)
获取第一个学生的物理成绩。程序代码如下:
01 import pandas as pd 02 s1=pd.Series([88,60,75]) 03 print(s1[0])
运行程序,控制台输出结果如下:
88
注意
Series不能使用[-1]定位索引。
2.Series标签索引
Series标签索引与位置索引方法类似,用[ ]表示,里面是索引名称,注意index的数据类型是字符串,如果需要获取多个标签索引值,用[[ ]]表示(相当于[ ]中包含一个列表)。
【示例05】 通过标签索引获取学生物理成绩。(示例位置:资源包\MR\Code\03\05)
通过标签索引“明日同学”和“七月流火”获取物理成绩,程序代码如下:
运行程序,控制台输出结果如下:
88 明日同学 88 七月流火 75
3.Series切片索引
用标签索引做切片,包头包尾(即包含索引开始位置的数据,也包含索引结束位置的数据)。
【示例06】 通过切片获取数据。(示例位置:资源包\MR\Code\03\06)
通过标签切片索引“明日同学”至“七月流火”获取数据。程序代码如下:
print(s1['明日同学':'七月流火']) #通过切片获取索引值
运行程序,控制台输出结果如下:
明日同学 88 高同学 60 七月流火 75
用位置索引做切片,和list列表用法一样,包头不包尾(即包含索引开始位置的数据,不包含索引结束位置的数据)。
【示例07】 通过位置切片获取数据。(示例位置:资源包\MR\Code\03\07)
通过位置切片1~4获取数据,程序代码如下:
01 s2=pd.Series([88,60,75,34,68]) 02 print(s2[1:4])
运行程序,控制台输出结果如下:
1 60 2 75 3 34
3.2.5 获取Series索引和值
获取Series索引和值主要使用Series的index和values方法。
【示例08】 获取物理成绩的索引和值。(示例位置:资源包\MR\Code\03\08)
下面使用Series的index和values方法获取物理成绩的索引和值,程序代码如下:
01 import pandas as pd 02 s1=pd.Series([88,60,75]) 03 print(s1.index) 04 print(s1.values)
运行程序,控制台输出结果如下:
RangeIndex(start=0, stop=3, step=1) [88 60 75]