Series是一种类似于NumPy中一维数组的对象,由一组数据(NumPy中各种数据类型的数据)与一组数据标签(索引)组成。NumPy中的Array、Pandas中的Series和Python中的List三者相近,最大的区别是List可含有不同数据类型的元素,而Array与Series中只允许存储相同数据类型的元素,正因如此,Array与Series可以更有效的使用内存,提高运算效率。
创建Series对象
Pandas中Series可通过三种方式创建,接下来详细讲解创建Series的三种方式。
直接创建
具体示例如下所示:
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: se1 = pd.Series([1,2,3,4,5])
In [4]: sv1 = se1.values
In [5]: si1 = se1.index
上述代码是直接创建Series对象,其中前两行是导入numpy和pandas;In [3]是直接采用pd.Series()函数创建Series,并将其赋值给变量se1;In [4]是访问se1的数据值,并将返回结果赋值给变量sv1;In [5]是访问se1中的索引值,并将返回结果赋值给变量si1。各变量的运行结果如下所示:
In [6]: se1
Out[6]:
0 1
1 2
2 3
3 4
4 5
dtype: int64
In [7]: sv1
Out[7]: array([1, 2, 3, 4, 5], dtype=int64)
In [8]: si1
Out[8]: RangeIndex(start=0, stop=5, step=1)
从上述运行结果可看出,Series在未指定索引时,系统将使用默认索引(从0到N-1)。
使用NumPy中arange()函数创建
具体示例如下所示:
In [9]: import numpy as np
In [10]: import pandas as pd
In [11]: se2 = pd.Series(np.arange(6))
In [12]: se = pd.Series(np.arange(6),index=['a','b','c','d','e','f'])
In [13]: sv2 = se2.values
In [14]: si2 = se2.index
In [15]: sv = se.values
In [16]: si = se.index
上述示例是通过NumPy中arange()函数创建Series对象,其中In [11]是创建Series,并将其赋值给变量se2,但未指定索引;In [12]是创建指定索引值的Series,并将其赋值给变量se;In [13]是访问se2的数据值,并将返回结果赋值给变量sv2;In [14]是访问se2的索引值,并将返回结果赋值给变量si2;In [15]是访问se的数据值,并将返回结果赋值给变量sv;In [16]是访问se的索引值,并将返回结果赋值给变量si。各变量的运行结果如下所示:
In [17]: se2
Out[17]:
0 0
1 1
2 2
3 3
4 4
5 5
dtype: int32
In [18]: sv2
Out[18]: array([0, 1, 2, 3, 4, 5])
In [19]: si2
Out[19]: RangeIndex(start=0, stop=6, step=1)
In [20]: se
Out[20]:
a 0
b 1
c 2
d 3
e 4
f 5
dtype: int32
In [21]: sv
Out[21]: array([0, 1, 2, 3, 4, 5])
In [22]: si
Out[22]: Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')
从上述运行结果可看出,在使用NumPy中arange()函数创建Series时,可使用list来为Series中数据指定索引值。
通过字典来创建
具体示例如下所示:
In [23]: import numpy as np
In [24]: import pandas as pd
In [25]: se3 = pd.Series({'a1':1,'b1':2,'c1':3,'a2':4,'b2':5,'c2':6})
In [26]: sv3 = se3.values
In [27]: si3 = se3.index
上述代码是通过字典来创建Series对象,其中In [25]是创建Series,并将其赋值给变量se3,并对各元素数据指定了特定的索引值;In [26]是访问se3的数据值,并将返回结果赋值给变量sv3;In [27]是访问se3的索引值,并将返回结果赋值给变量si3。各变量的运行结果如下所示:
In [28]: se3
Out[28]:
a1 1
a2 4
b1 2
b2 5
c1 3
c2 6
dtype: int64
In [29]: sv3
Out[29]: array([1, 4, 2, 5, 3, 6], dtype=int64)
In [30]: si3
Out[30]: Index(['a1', 'a2', 'b1', 'b2', 'c1', 'c2'], dtype='object')
从上述运行结果可看出,在使用字典创建Series对象时,为元素数据指定的索引值会按index进行排序,而并不一定是创建时的顺序。
网友评论