Python数据分析从入门到精通
上QQ阅读APP看书,第一时间看更新

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]