Python Pandas创建Series对象的多种方法(附带实例)
Series 是 Pandas 的核心对象之一,该对象与 Python 中的列表对象类似,它们存储数据的方式与一维数组类似。不过 Series 对象还包含与数据对应的索引(标签)。
为了使本节的示例代码正常运行,需要在每个示例的开头添加以下代码,在 Python 中导入 Pandas 库,并将其别名设置为 pd,本节中的每个示例都使用该别名:
使用 Pandas 中的 Series() 函数可以创建 Series 对象,该函数主要有以下两个参数:
如果不想使用中间变量 data 和 index,则可以将 3 行代码合并为一行:
如果省略 index 参数,则创建的 Series 对象中的数据起始索引将从 0 开始。
除了数字之外,也可以使用字符串作为索引。下面的代码是使用从 A 开始的英文大写字母作为数据的索引:
如果在使用字典的情况下仍然指定了 index 参数,则最后创建的数据的索引将按照 index 参数的顺序显示,并从字典中提取相应的值:
为了使本节的示例代码正常运行,需要在每个示例的开头添加以下代码,在 Python 中导入 Pandas 库,并将其别名设置为 pd,本节中的每个示例都使用该别名:
import pandas as pd
使用 Pandas 中的 Series() 函数可以创建 Series 对象,该函数主要有以下两个参数:
- data:存储在 Series 对象中的数据,可以是 Python 中的数字、字符串、列表、元组和字典,也可以是 NumPy 中的一维数组。
- index:与 data 参数指定的各项数据对应的索引。省略该参数时,自动创建从 0 开始的整数序列,并将其用作数据的索引。
Python列表创建Series对象
下面的代码是使用 Python 中的列表对象作为 data 参数来创建 Series 对象,并将从 1 开始的自然数序列设置为数据的索引,最后一个索引编号会根据列表中的元素总数自动调整。data = list('python') index = list(range(1, len(data)+1)) sr = pd.Series(data, index)上述代码将创建以下数据:
1 p 2 h 3 t 4 h 5 o 6 n为 index 变量赋值时,可以省略 list() 函数,将上面的代码改为以下形式:
index = range(1, len(data)+1))
如果不想使用中间变量 data 和 index,则可以将 3 行代码合并为一行:
sr = pd.Series(list('python'), range(1, len(names)+1))
如果省略 index 参数,则创建的 Series 对象中的数据起始索引将从 0 开始。
0 p 1 h 2 t 3 h 4 o 5 n
除了数字之外,也可以使用字符串作为索引。下面的代码是使用从 A 开始的英文大写字母作为数据的索引:
data = list('python') index = list('ABCDEF') sr = pd.Series(data, index)上述代码将创建以下数据:
A p B h C t D h E o F ndata 参数的值也可以是手动输入元素的列表,列表中的各个元素可以具有不同的数据类型。
data=[1, 2, 3, 'Python', 'NumPy', 'Pandas'] index= list('ABCDEF') sr = pd.Series(data, index)上述代码将创建以下数据:
A 1 B 2 C 3 D Python E NumPy F Pandas提示,当 index 参数中的索引个数大于 data 参数中的数据个数时,多出的索引所对应的数据将显示为 NaN(Not a Number),这是在 Pandas 中表示缺失数据的方法。
Python字典创建Series对象
下面的代码与上一个示例的功能相同,此处使用 Python 中的字典对象作为 data 参数来创建 Series 对象,此时会将字典中的键作为数据的索引,所以无须额外指定 index 参数。data = dict(zip(range(1, 7), list('python'))) sr = pd.Series(data)
如果在使用字典的情况下仍然指定了 index 参数,则最后创建的数据的索引将按照 index 参数的顺序显示,并从字典中提取相应的值:
data = dict(zip(range(1, 7), list('python'))) sr = pd.Series(data, [1, 3, 5, 2, 4, 6])上述代码将创建以下数据:
1 p 3 t 5 o 2 y 4 h 6 n
Python使用字面值创建Series对象
下面的代码使用字面值作为 data 参数来创建 Series 对象。由于 index 参数有 6 个值(1~6),而 data 参数只有一个值(666),为了使每个索引都有对应的值,所以会将 666 重复显示 6 次,使每个索引都有一个值。sr = pd.Series(666, range(1, 7))上述代码将创建以下数据:
1 666 2 666 3 666 4 666 5 666 6 666提示,Python 中的字面值在 Pandas 和 NumPy 中称为标量值,表示没有方向的值。
NumPy数组创建Series对象
下面的代码是使用 NumPy 中的 arange() 函数创建一个一维数组,并将其作为 data 参数来创建 Series 对象:sr = pd.Series(np.arange(100,106))上述代码将创建以下数据:
0 100 1 101 2 102 3 103 4 104 5 105