多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# `pandas`数据结构之`Series` > `Series`是一种类似于一维数组的对象,由一组数据(各种`NumPy`数据类型)以及一组与之相关的数据标签(即索引)组成。 * * * ~~~ from pandas import Series, DataFrame import pandas as pd obj = Series([4, 7, -5, 3]) print(obj) // 0 4 1 7 2 -5 3 3 dtype: int64 ~~~ 从上面代码可以看出,`Series`的字符串表现形式为:索引在左边,值在右边。在没有为数据指定索引的前提下,会自动创建一个从0到N-1的整数型索引。可以通过`Series`的`values`和`index`属性获取其数组表示形式和索引对象。 ~~~ from pandas import Series, DataFrame import pandas as pd obj = Series([4, 7, -5, 3]) print(obj.index) //RangeIndex(start=0, stop=4, step=1) print(obj.values) //[ 4 7 -5 3] ~~~ * * * 通常,我们希望所创建的`Series`带有一个可以对各个数据点进行标记的索引: ~~~ from pandas import Series, DataFrame import pandas as pd obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c']) print(obj2) // d 4 b 7 a -5 c 3 dtype: int64 ~~~ * * * 与普通`NumPy`数组相比,`Seria`可以通过索引的方式选取一个或一组值: ~~~ from pandas import Series, DataFrame import pandas as pd obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c']) print(obj2['a']) //-5 obj2['d'] = 6 print(obj2[['c', 'a', 'd']]) // c 3 a -5 d 6 dtype: int64 ~~~ * * * `NumPy`数组运算(如根据布尔型数组进行过滤,标量乘法,应用数学函数等)都会保留索引和值之间的链接: ~~~ from pandas import Series, DataFrame import pandas as pd obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c']) obj2['d'] = 6 print(obj2[obj2 > 0]) // d 6 b 7 c 3 dtype: int64 print(obj2*2) // d 12 b 14 a -10 c 6 dtype: int64 ~~~ * * * 还可以将`Series`看成是一个定长的有序字典,因为它是索引值到数据值的映射。它可以用在原本需要字典参数的函数中: ~~~ from pandas import Series, DataFrame import pandas as pd obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c']) obj2['d'] = 6 print('b' in obj2) //True print('e' in obj2) //False ~~~ * * * 如果数据被存放在一个`Python`字典中,也可以直接通过这个字典来创建`Series` ~~~ from pandas import Series, DataFrame import pandas as pd sData = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000} obj3 = Series(sData) print(obj3) // Ohio 35000 Oregon 16000 Texas 71000 Utah 5000 dtype: int64 ~~~