pandas之Series对象

pandas库的Series对象用来表示一维数据结构,跟数组类似,但多了一些额外的功能,它的内部结构很简单,由两个相互关联的数组组成(index和values),其中主数组用来存放数据,主数组的每一个元素都有一个与之相关联的标签,这些标签存储在一个Index的数组中.


声明Series对象
构造参数如下:

1 def __init__(self, data=None, index=None, dtype=None, name=None,
2                  copy=False, fastpath=False):
>>> import pandas as pd
>>> s = pd.Series([1, 2, 3, 4])
>>>print(s)
0    1
1    2
2    3
3    4
dtype: int64

左侧是index(索引),声明Series时,若不指明index,pandas默认使用从0开始依次递增的数值作为index数组。
右侧是values(即封装的数据).

调用构造函数时指定index选项

>>> s = pd.Series([1, 2, 3,4], index=[‘a‘, ‘b‘, ‘c‘, ‘d‘])
>>> print(s)
a    1
b    2
c    3
d    4
dtype: int64

使用index和values属性查看组成Series对象的两个数组

>>> print(s.index)
Index([‘a‘, ‘b‘, ‘c‘, ‘d‘], dtype=‘object‘)
>>> print(type(s.index))
<class ‘pandas.core.indexes.base.Index‘>
>>> print(s.values)
[1 2 3 4]
>>> print(type(s.values))
<class ‘numpy.ndarray‘>

获取内部数据
直接使用data数组的下标获取:

>>> print(s[2])
3
>>> print(type(s[2]))
<class ‘numpy.int64‘>

通过index数组的值来获取对应的data数组中的值

1 >>> print(s[‘c‘])
2 3

获取多个元素

>>>print(s[0:2])
a    1
b    2
dtype: int64
>>> print(type(s[0:2]))
<class ‘pandas.core.series.Series‘>
>>>print(s[[‘a‘, ‘b‘]])   ---通过索引index里面的值来获取相应的元素
a    1
b    2
dtype: int64

为元素赋值: 使用上面介绍的方法选取元素,然后进行赋值

>>> s[1] = 9999
>>> print(s)
a       1
b    9999
c       3
d       4
dtype: int64
>>> s[‘c‘] = 666
>>> print(s)
a       1
b    9999
c     666
d       4
dtype: int64

使用Numpy数组或者其他的Series对象定义新的Series对象.

>>> import numpy as np
>>> a = np.array([11, 12, 13, 14])
>>> s2 = pd.Series(a)    ---Series对象的values属性本来就是一个Numpy.Array对象
>>> print(s2)       --- Series对象中的values数组(数据)是对numpy.ndarray对象的引用,如果改变原有对象的值,Series对象的值也会跟着改变
0    11
1    12
2    13
3    14
dtype: int32
>>> s3 = pd.Series(s)
>>> print(s3)
a       1
b    9999
c     666
d       4
dtype: int64
Series用作字典
因为Series对象的index对应values,所以我们可以用字典对象来构造Series对象.字典中的所有的键放在Series对象的index数组中,字典中的所有值放在Series对象的values数组中,仍然保持对应关系.
>>> dic = {"a": 3, "b": 4, "c": 5}
>>> s = pd.Series(dic)
>>> print(s)
a    3
b    4
c    5
dtype: int64