Series是一种类似于一维数组的对象,它由一维数组(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成。

Series的创建

通过以下方式创建的Series会自动添加索引:

  1. s = pd.Series(['a','b','c','d','e'])
  2. print(s)

输出:

  1. 0 a
  2. 1 b
  3. 2 c
  4. 3 d
  5. 4 e
  6. dtype: object


通过字典创建

Series 可以用字典实例化:

  1. d = {'b': 1, 'a': 0, 'c': 2}
  2. pd.Series(d)

输出:

  1. b 1
  2. a 0
  3. c 2
  4. dtype: int64


指定索引

通过index指定索引,与字典不同的是:Series允许**重复的**索引

  1. s = pd.Series(['a','b','c','d','e'],index=[100,200,100,400,500])
  2. print(s)

输出:

  1. 100 a
  2. 200 b
  3. 100 c
  4. 400 d
  5. 500 e
  6. dtype: object


Series的常用属性

可以通过Series的values和index属性获取其数组表示形式和索引对象:

  1. s = pd.Series(['a','b','c','d','e'])
  2. print(s.values)
  3. print(s.index)

输出:

  1. ['a' 'b' 'c' 'd' 'e']
  2. Int64Index([100, 200, 100, 400, 500], dtype='int64')

Series的获取

与普通numpy数组相比,可以通过索引的方式选取Series中的单个或一组值

  1. s = pd.Series(['a','b','c','d','e'],index=[100,200,100,400,500])

如果存在索引相同的项,则全部输出:

  1. print(s[100])

输出:

  1. 100 a
  2. 100 c
  3. dtype: object

获取多个索引项:

  1. print(s[[400, 500]])

输出:

  1. 400 d
  2. 500 e
  3. dtype: object

Series的运算

创建以下Series:

  1. s = pd.Series(np.array([1,2,3,4,5]), index=['a', 'b', 'c', 'd', 'e'])
  2. print(s)
  1. a 1
  2. b 2
  3. c 3
  4. d 4
  5. e 5
  6. dtype: int64

对应元素求和

使用+会将相同索引的元素进行相加:

  1. print(s+s)
  1. a 2
  2. b 4
  3. c 6
  4. d 8
  5. e 10
  6. dtype: int64

对应元素求积

使用*会将相同索引的元素进行相乘:

  1. print(s*3)
  1. a 3
  2. b 6
  3. c 9
  4. d 12
  5. e 15
  6. dtype: int64

不同索引的对齐

Series中最重要的一个功能是:它会在算术运算中自动对齐不同索引的数据
Series 和多维数组的主要区别在于, Series 之间的操作会自动基于标签对齐数据。因此,不用顾及执行计算操作的 Series 是否有相同的标签。

  1. obj1 = pd.Series({"Ohio": 35000, "Oregon": 16000, "Texas": 71000, "Utah": 5000})
  2. obj2 = pd.Series({"California": np.nan, "Ohio": 35000, "Oregon": 16000, "Texas": 71000})
  3. print(obj1)
  4. print(obj2)
  5. print(obj1 + obj2)

输出:

  1. Ohio 35000
  2. Oregon 16000
  3. Texas 71000
  4. Utah 5000
  5. dtype: int64
  6. California NaN
  7. Ohio 35000.0
  8. Oregon 16000.0
  9. Texas 71000.0
  10. dtype: float64
  11. California NaN
  12. Ohio 70000.0
  13. Oregon 32000.0
  14. Texas 142000.0
  15. Utah NaN
  16. dtype: float64

又如:

  1. s = pd.Series(np.array([1,2,3,4,5]), index=['a', 'b', 'c', 'd', 'e'])
  2. print(s[1:])
  3. print(s[:-1])
  4. print(s[1:] + s[:-1])
  1. b 2
  2. c 3
  3. d 4
  4. e 5
  5. dtype: int64
  6. a 1
  7. b 2
  8. c 3
  9. d 4
  10. dtype: int64
  11. a NaN
  12. b 4.0
  13. c 6.0
  14. d 8.0
  15. e NaN
  16. dtype: float64