序列(Series)是 Pandas 中用于存储一维数组的结构,由一组数据和对应的索引构成。索引可以是默认的整数索引,也可以是用户自定义的标签。导入惯例为 import pandas as pd,以及 from pandas import Series。
创建序列常用两种方法。其一,用列表作为参数且不指定索引,系统自动生成整数索引,例如 a = Series([6.3, 43.1, 24.4]),索引为 0、1、2。其二,用 numpy 数组作为参数,并用 index 指定标签,例如 chengji = Series(np.array((70, 85, 90)), index=['语文', '数学', '英语']),标签表示课程、值表示分数。创建后可通过对象的 index 属性修改标签,如 gu.index = ['幸福银行', '平安科技', '南方通信'],标签表示股票名称、值表示价格。有标签时更便于理解和访问数据,而不必依赖整数索引。
访问元素时,无论对象有无标签,都可通过整数索引访问,如 a[1] 得到 43.1;有标签时还可通过标签访问,如 chengji['数学'] 得到 85、gu['南方通信'] 得到 24.4。对序列切片得到的是原始对象的视图:索引切片与 Python 可迭代对象相同,如 gu[0:2] 不含结束位置;标签切片语法为 对象['起始标签':'结束标签'],切连续元素且包含结束标签,如 gu['平安科技':'南方通信']。
增加和修改元素的方法与 Python 字典相同:对象['标签1'] = 值。标签已存在则修改,不存在则新增,如 gu['南方通信'] = 25.3 修改价格,gu['光明证券'] = 17.78 增加元素。删除使用 drop():删除单个元素时直接传入标签;删除多个时将标签封装为列表传入,列表顺序可与序列中顺序不同。drop() 默认返回新序列、不修改原始对象;若要在原对象中删除,需指定 inplace=True。
序列支持数值运算和逻辑运算,并能在整条序列上高效执行,如 open + 1.0、open > 10.0。序列之间运算时,Pandas 会根据索引对齐数据,即使两个序列的索引顺序不同也能自动对齐。例如收盘价 close 与开盘价 open 的索引顺序不同,相减时仍按股票名称对应。易错点:索引切片不含结束位置,标签切片包含结束标签;drop() 未设 inplace=True 时原对象不变;序列运算按索引对齐,不是按位置相减。
index 创建;创建后可用 index 属性改标签。对象['起始标签':'结束标签'] 含结束标签。对象['标签']=值 可修改或新增;drop() 默认返回新对象,inplace=True 才改原对象。