5.2.1 Series介绍
Series是一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
Series对象除了支持使用位置作为下标存取元素之外,还可以使用索引标签作为下标存取元素,这个功能与Python的字典(dictionary)对象类似。
5.2.2 创建Series对象
下面创建一个Series对象,示例代码:
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5], index=["a", "b", "c" , "d", "e"])
print(s)
运行结果:
a 1
b 2
c 3
d 4
e 5
dtype: int64
Series的字符串表现形式为:索引在左边,值在右边。以上代码是在创建Series的时候为值直接创建索引。当我们没有为数据指定索引时,Series会自动创建一个0到N-1(N为数据长度)的整数型索引。示例代码:
s2 = pd.Series([4, 7, -5, 3])
print(s2)
运行结果:
0 4
1 7
2 -5
3 3
dtype: int64
此外,我们也可以通过字典的形式来创建Series,示例代码:
sdata={'ohio':3500, 'Texas':7100, 'oregon':1600, 'utah':500}
s3 = pd.Series(sdata)
print(s3)
运行结果:
Texas 7100
ohio 3500
oregon 1600
utah 500
dtype: int64
5.2.3 Series对象的属性
每个Series对象包含两个属性,index和values。
index:它是从ndarray数组继承的Index索引对象,保存标签信息。若创建Series对象不指定index,将自动创建一个表示位置下标的索引。
values:保存元素值的ndarray数组,NumPy的函数都对此数组进行处理。
可以通过Series的values和index属性获取其数组的值和对应的属性。示例代码:
s4 = pd.Series([6, 8, 7, 9])
print(s4.values)
print(s4.index)
运行结果:
[6 8 7 9]
RangeIndex(start=0, stop=4, step=1)
5.2.4 Series对象元素的存取
Series对象与NumPy的ndarray数组类似,可以通过下标获取元素值,此外Series下标运算同时支持位置和标签两种形式,示例代码:
print("位置下标 s[2]:",s[2])
print("标签下标 s['d']:",s['d'])
运行结果:
位置下标 s[2]: 3
标签下标 s['d']: 4
Series对象还支持位置切片和标签切片。位置切片遵循Python切片规则,包括起始位置,但不包括结束位置;但标签切片则同时包括起始标签和结束标签。示例代码:
print(s[1:3])
print(s['b' : 'd'])
运行结果:
b 2
c 3
dtype: int64
b 2
c 3
d 4
dtype: int64
和NumPy的ndarray数组一样,还可以使用位置列表或位置数组存取元素,同样也可以使用标签列表和标签数组。示例代码;
print(s[[1, 3, 2]])
print(s[['b', 'd', 'c']])
运行结果:
b 2
d 4
c 3
dtype: int64
b 2
d 4
c 3
dtype: int64
网友评论