首页 > 编程笔记 > Python笔记 阅读:13

Pandas Series对象的用法(非常详细)

Pandas 是 Python 数据分析中重要的库,而 Series 和 DataFrame 是 Pandas 库中两个重要的对象,也是 Pandas 中两个重要的数据结构
本节将主要介绍 Series 对象。

图解Series对象

Series 是 Pandas 库中的一种数据结构,它与一维数组类似,由一组数据及与这组数据相关的标签(即索引)组成,仅有一组数据没有索引也可以创建一个简单的 Series。Series 可以存储整数、浮点数、字符串、Python对象等多种类型的数据。


图 1 原始数据(成绩表)

例如,成绩表(如上图所示)中包含了 Series 对象和 DataFrame 对象,其中“语文”、
“数学”、“英语”每列都是一个 Series 对象,而“语文”、“数学”和“英语”三列组成了一个 Data Frame 对象,如下图所示:


图 2 图解Series

创建Series对象

创建 Series 对象主要使用 Pandas 的 Series 类,语法如下:
s = pd.Series(data, index = index)
参数说明:
当 data 参数是多维数组时,index 长度必须与 data 长度一致。如果没有指定 index 参数,则会自动创建数值型索引(0~data 的数据长度 -1)。

【实例 1】分别使用列表和字典创建 Series对象,也就是一列数据。程序代码如下:
# 导入pandas模块
import pandas as pd

# 使用列表创建Series对象
s1=pd.Series([1,2,3])
print(s1)

# 使用字典创建Series对象
s2 = pd.Series({"A":1,"B":2,"C":3})
print(s2)
运行程序,结果如下:

0    1
1    2
2    3
dtype: int64

A    1
B    2
C    3
dtype: int64

上述运行结果中的“dtype:int64”是 Data Frame 对象的数据类型,int 为整型,后面的数字 64 表示位数。

【实例 2】下面创建一列“物理”成绩。程序代码如下:
# 导入pandas模块
import pandas as pd
# 创建Series对象,即一列“物理”成绩
s1=pd.Series([88,60,75])
print(s1)
运行程序,结果如下:

0    88
1    60
2    75

在上述示例中,如果通过 pandas 模块引入 Series 对象,那么就可以直接在程序中使用 Series 对象了。主要代码如下:
from pandas import Series
s1=Series([88,60,75])

手动设置Series对象的索引

创建 Series 对象时会自动生成整数索引,默认值从 0 开始,至数据长度减 1。

例如,实例 2 中使用的就是默认索引 0、1、2。除了使用默认索引,还可以通过 index 参数手动设置索引。

【实例 3】手动设置索引,将创建的“物理”成绩的索引设置为 1、2、3,也可以是“王同学”、“高同学”、“李同学”。程序代码如下:
# 导入pandas模块
import pandas as pd
# 创建Series对象
s1=pd.Series(data=[88,60,75],index=[1,2,3])
s2=pd.Series(data=[88,60,75],index=["王同学","高同学","李同学"])
# 输出数据
print(s1)
print(s2)
运行程序,结果如下:

1    88
2    60
3    75
dtype: int64

王同学    88
高同学    60
李同学    75
dtype: int64

Series对象的索引

1) Series位置索引

位置索引默认是从 0 开始的,[0] 是 Series 的第一个数,[1] 是 series 的第二个数,以此类推。

【实例 4】首先创建 Series 对象,即一列物理成绩,然后获取第一个学生的物理成绩。程序代码如下:
# 导入pandas模块
import pandas as pd
# 创建一列数据
s1=pd.Series([88,60,75])
# 通过索引获取索引值
print(s1[0])
运行程序,结果为 88。

注意,Series 不能使用 [-1] 来定位索引。

2) Series标签索引

标签索引与位置索引方法类似,用 [] 表示,[] 中是索引名称,注意 index 的数据类型是字符串,如果要获取多个标签索引值,需用 [[]] 表示(相当于 [] 中包含一个列表)。

【实例 5】通过标签索引“王同学”和“李同学”获取学生的物理成绩。程序代码如下:
# 导入pandas模块
import pandas as pd
# 创建一列数据并设置索引
s1=pd.Series(data=[88,60,75],index=["王同学","高同学","李同学"])
print(s1['王同学'])    # 通过一个标签索引获取索引值
print(s1[['王同学','李同学']]) # 通过多个标签索引获取索引值
运行程序,结果如下:

88
王同学   88
李同学    75

3) Series切片索引

通常用标签索引做切片,并包头包尾(既包含索引开始位置的数据,也包含索引结束位置的数据)。

【实例 6】通过标签索引切片“王同学”至“李同学”获取数据,主要代码如下:
print(s1['王同学':'李同学']) # 通过标签索引切片获取索引值
运行程序,结果如下:

王同学    88
高同学    60
李同学    75


用位置索引做切片,其用法和 list 列表一样,包头不包尾(即包含索引开始位置的数据,不包含索引结束位置的数据)。

【实例 7】通过位置索引切片获取数据,主要代码如下:
s2=pd.Series([88,60,75,34,68])
print(s2[1:3])
运行程序,结果如下:

1    60
2    75
3    34

获取Series对象的索引和值

获取 Series 对象的索引和值主要使用 Series 的 index 属性和 values 属性。

【实例 8】使用 Series 对象的 index 属性和 values 属性获取物理成绩的索引和值,程序代码如下:
# 导入pandas模块
import pandas as pd
# 创建一列数据
s1=pd.Series([88,60,75])
# 通过index属性和values属性获取物理成绩的索引和值
print(s1.index)
print(s1.values)
运行程序,结果如下:

RangeIndex(start=0, stop=3, step=1)
[88 60 75]

相关文章