# 4.1.1 序列创建与基本操作

序列（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` 时原对象不变；序列运算按索引对齐，不是按位置相减。

## 关键要点
- 序列是一维数组结构，要素为数据和索引（默认整数索引或自定义标签）。
- 可用列表（自动整数索引）或 numpy 数组加 `index` 创建；创建后可用 `index` 属性改标签。
- 访问：整数索引始终可用；有标签时还可用标签。切片是原对象的视图。
- 索引切片不含结束位置；标签切片 `对象['起始标签':'结束标签']` 含结束标签。
- 赋值 `对象['标签']=值` 可修改或新增；`drop()` 默认返回新对象，`inplace=True` 才改原对象。
- 序列运算按索引自动对齐，索引顺序不同也能正确对应。

---
