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数组中,仍然保持对应关系.
因为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