美文网首页
pandas数据结构基础之Series

pandas数据结构基础之Series

作者: 有机会一起种地OT | 来源:发表于2019-11-19 16:00 被阅读0次

Series 是一个一维带标签数组,可以保存任意数据类型。轴标签也称为索引。

创建Series

s = pd.Series(data, index=index)
其中参数 index 是一个轴标签list。data 可以以下三种:

  • python字典
    如 d = {'b': 1, 'a': 0, 'c': 2},直接传入字典。
    如果没有传入 index 参数,在高于0.23的pandas版本中,会根据字典本身的顺序排序,即 ['b', 'a', 'c']。在低于0.23的版本中,会根据字典中 key 的字典序排序,即 ['a', 'b', 'c']。
    如果传入了 index 参数,则根据传入的参数,对数据排序。
  • 一个ndarray
    这时 index 必须同 data 有一样的长度。
In:s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
Out:
a    0.469112
b   -0.282863
c   -1.509059
d   -1.135632
e    1.212112
dtype: float64

如果没有传入 index 参数,则用 [0, ..., len(data)-1] 作为索引。

  • 一个标量值
    但是用标量创建Series时,必须传入 index 参数,并且所有索引下的数据都为相同的指定标量。

pandas支持不唯一索引,如果执行一个不支持重复索引的运算,则可能报错。

Series作为一个类ndarry对象

Series非常类似于ndarray,大多数Numpy函数都对Series同样有效,只是对Series的所有操作都同时影响索引。如切片操作会同时截取相应的索引。
pandas Series和Numpy array一样 具有dtype属性s.dtype
大多数情况下,该属性都为Numpy的数据类型。但作为一个扩展子Numpy的第三方库,pandas也有一些自己的数据类型,如Categorical data和 Null integer data type。

s.array属性,保存了Series 底层存储的数组。当需要进行一些不需要索引的操作时,使用该数组会很有用。
s.array总是一个pandas.api.extensions.ExtensionArray,是对一个或多个具体数组(如ndarray)的简单封装。pandas利用ExtensionArray来将具体数据存在Series中,或存在DataFrame的列中。

如果你需要使用ndarray,可以使用s.to_numpy()返回一个ndarray。

Series作为一个类字典对象

一个 Series 是一个固定大小的字典,你可以通过索引标签来 get 或 set 字典值。
s['a']获取索引为 a 的值,s['a'] = 12则更改索引为 a 的值为12。
使用 get 方法有同样的效果,当对不存在指定索引时返回None 或指定的默认返回值:

In: s.get('f',  np.nan) 
Out: nan

'a' in s返回布尔值,判断索引 a 是否在Series中。

向量化操作和标签对齐

当使用原生Numpy数组时,往往不需要按数组值进行循环操作,这称为向量化。在使用Series时,也是一样,Series同样可以当做一个ndarray传给大多数Numpy方法。如:

s + s
s * 2
np.exp(s)

均对数据进行元素级运算。
Series 和 ndarray 之间的一个关键的不同,是Series之间的运算会自动地基于标签进行。你可以直接编写运算,而不需考虑参与运算的Series是否具有相同的索引标签。

In: s[1:] + s[:-1]
Out: 
a         NaN
b   -0.565727
c   -3.018117
d   -2.271265
e         NaN
dtype: float64

结果中包含各Series索引的并集。当一个Series的索引无法在另一个Series中找到时,对应索引会标记为NaN。不需要任何明确的数据对齐的代码,保证了交互式数据分析和研究中极大的自由和灵活性。

名称属性

Series还有一个name属性:
s = pd.Series(np.random.randn(5), name='something')
通过s.name获取,使用s.rename方法可以重命名并返回一个新的Series对象。

相关文章

网友评论

      本文标题:pandas数据结构基础之Series

      本文链接:https://www.haomeiwen.com/subject/jbwwictx.html