Series类型由一组数据及与之相关的数据索引组成,Series类型可以由如下类型创建:
- Python列表,index与列表元素个数一致
In [1]: import pandas as pd
In [2]: list_a = [2,4,5,6]
In [3]: pd.Series(list_a)
Out[3]:
0 2
1 4
2 5
3 6
dtype: int64
- 标量值,index表达Series类型的尺寸
In [4]: pd.Series(1,index = [1,2,3])
Out[4]:
1 1
2 1
3 1
dtype: int64
- Python字典,键值对中的“键”是索引,index从字典中进行选择操作
In [5]: pd.Series({'a':1,'b':3})
Out[5]:
a 1
b 3
dtype: int64
#如果定义的index在原字典中已经存在,那么该索引会一直对应原字典的值,如果index对应不到原字典的值,则会返回NaN
In [11]: pd.Series({'a':1,'b':3},index = ['b','a','c'])
Out[11]:
b 3.0
a 1.0
c NaN
dtype: float64
- ndarray,索引和数据都可以通过ndarray类型创建
In [9]: list_b = np.arange(6)
In [10]: pd.Series(list_b)
Out[10]:
0 0
1 1
2 2
3 3
4 4
5 5
dtype: int32
- 其他函数,range()函数等
In [12]: pd.Series(range(3))
Out[12]:
0 0
1 1
2 2
dtype: int32
Series类型的基本操作:
- Series类型包括index和values两部分
In [14]: a = pd.Series({'a':1,'b':5})
In [15]: a.index
Out[15]: Index(['a', 'b'], dtype='object')
In [16]: a.values #返回一个多维数组numpy对象
Out[16]: array([1, 5], dtype=int64)
- Series类型的操作类似ndarray类型
#自动索引和自定义索引并存,但不能混用
In [17]: a[0] #自动索引
Out[17]: 1
#自定义索引
In [18]: a['a']
Out[18]: 1
#不能混用
In [20]: a[['a',1]]
Out[20]:
a 1.0
1 NaN
dtype: float64
- Series类型的操作类似Python字典类型
#通过自定义索引访问
#对索引保留字in操作,值不可以
In [21]: 'a' in a
Out[21]: True
In [22]: 1 in a
Out[22]: False
Series类型在运算中会自动对齐不同索引的数据
In [29]: a = pd.Series([1,3,5],index = ['a','b','c'])
In [30]: b = pd.Series([2,4,5,6],index = ['c,','d','e','b'])
In [31]: a+b
Out[31]:
a NaN
b 9.0
c NaN
c, NaN
d NaN
e NaN
dtype: float64
Series对象可以随时修改并即刻生效
In [32]: a.index = ['c','d','e']
In [33]: a
Out[33]:
c 1
d 3
e 5
dtype: int64
In [34]: a+b
Out[34]:
b NaN
c NaN
c, NaN
d 7.0
e 10.0
dtype: float64
总结:Series基本操作类似ndarray和字典,根据索引对齐。