Pandas 中序列(Series)是能够保存任何类型的数据(整数,字符串,浮点数,Python对象等)的一维标记数组。 轴标签统称为索引。这个概念与字典有点类似。
pandas.Series( data, index, dtype, copy)
构造函数的参数如下:
data
为来源数据,可以使用多种格式,如:ndarray
,list
,constants
;index
必须是唯一的和散列的索引值,与数据的长度相同。 如果没有索引被传递,缺省使用np.arange(n)
;dtype
用于数据类型。如果没有,会尝试推断数据类型;copy
复制数据,默认为false
。
可以使用各种 Python 中的序列来创建一个 Pandas
序列,如:
- 数组
- 字典
- 标量值或常数
如果没有参数会创建一个基本序列,则是一个空序列。
import pandas as pd
import numpy as np
s = pd.Series()
s
Series([], dtype: object)
最好声明一下类型。
pd.Series(dtype= np.float64)
Series([], dtype: float64)
如果数据是 ndarray
,则传递的索引必须具有相同的长度。
如果没有传递索引值,那么默认的索引范围将是 np.arange(n)
,其中 n
是数组长度。
import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data)
s
0 a 1 b 2 c 3 d dtype: object
这里没有传递任何索引,因此默认情况下,它分配了从 0
到 len(data)-1
的索引,即: 0
- 3
。
s2 = pd.Series(data,index=[100,101,102,103])
s2
100 a 101 b 102 c 103 d dtype: object
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data)
s
a 0.0 b 1.0 c 2.0 dtype: float64
注意:字典键用于构建索引。
# data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data,index=['b','c','d','a'])
s
b 1.0 c 2.0 d NaN a 0.0 dtype: float64
注意观察:索引顺序保持不变,缺少的元素使用 NaN
(不是数字)填充。
s = pd.Series(5, index=[0, 1, 2, 3])
s
0 5 1 5 2 5 3 5 dtype: int64
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
检索第一个元素。比如已经知道数组从零开始计数,第一个元素存储在零位置。
s[0]
/tmp/ipykernel_6695/243613605.py:1: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]` s[0]
np.int64(1)
检索序列中的前三个元素。 如果 a:
被插入到其前面,则将从该索引向前的所有项目c。
如果使用两个参数(使用它们之间),则将从两个索引之间的项目(不包括停止索引)被提取。
s[:3]
a 1 b 2 c 3 dtype: int64
检索最后三个元素,参考以下示例代码:
s[-3:]
c 3 d 4 e 5 dtype: int64
使用索引标签值检索单个元素。
s['a']
np.int64(1)
使用索引标签值列表检索多个元素。
s[['a','c','d']]
a 1 c 3 d 4 dtype: int64
如果请求不存在的标签,则会出现异常。