Python Series用法详解
在 Pandas 中,其主要的数据结构有两种,即 Series 和 DataFrame,本节重点介绍 Series。
Series 是一种类似于一维数组对象的结构,由一组元素和与之相关的一组标签组成,其结构如下图所示。
图 1 Series的结构
需要重点注意的是,Series 中元素的数据类型需为 NumPy 中的数据类型。
示例代码如下:
图 2 Series中位置和标签的关系
示例代码如下:
示例代码如下:
示例代码如下:
需要注意的是,使用该格式获取的 Series 包括开始位置所对应的元素,但不包括结束位置所对应的元素。
示例代码如下:
示例代码如下:
示例代码如下:
示例代码如下:
需要注意的是,使用该格式获取的 Series 包括开始标签和结束标签所对应的元素,示例代码如下:
需要注意的是,布尔值列表中的元素个数必须与 Series 中的元素个数相等,示例代码如下:
需要注意的是,布尔值数组对象中的元素个数必须与 Series 中的元素个数相等,示例代码如下:
需要注意的是,布尔值 Series 中的元素个数必须与 Series 中的元素个数相等,示例代码如下:
示例代码如下:
Series 是一种类似于一维数组对象的结构,由一组元素和与之相关的一组标签组成,其结构如下图所示。
图 1 Series的结构
需要重点注意的是,Series 中元素的数据类型需为 NumPy 中的数据类型。
Series 的创建
可以通过 pandas 模块中的 Series 类创建 Series 对象,进而完成 Series 的创建,其语法格式如下:Series(data,index,dtype,name)其中,参数 data 表示元素;参数 index 表示标签,其默认值为从 0 开始的整数;参数 dtype 表示元素的数据类型,其值需为 NumPy 中的数据类型;参数 name 表示名称。
示例代码如下:
import pandas as pd import numpy as np #使用标量创建Series对象(默认标签) s1=pd.Series(6) print(s1) print('=================') #使用标量创建Series对象(指定标签) s2=pd.Series(6,['a','b','c','d']) print(s2) print('=================') #使用列表创建Series对象(默认标签) s3=pd.Series([3,2,1,0]) print(s3) print('=================') #使用列表创建Series对象(指定标签) s4=pd.Series([3,2,1,0],['a','b','c','d']) print(s4) print('=================') #使用字典创建Series对象 #需要注意的是,字典中的键就是Series中的标签 s5=pd.Series({'a':3,'b':2,'c':0,'d':1}) print(s5) print('=================') #需要注意的是,如果指定的标签在字典中不存在,则其对应的数据部分使用NaN补齐 s6=pd.Series({'a':3,'b':2,'c':0,'d':1},['a','b','c','d','e']) print(s6) print('=================') #使用NumPy中的数组对象创建Series对象(默认标签) s7=pd.Series(np.array([3,2,0,1])) print(s7) print('=================') #使用NumPy中的数组对象创建Series对象(指定标签) s8=pd.Series(np.array([3,2,0,1]),['a','b','c','d']) print(s8)
Series的访问
在 Pandas 中,可以通过位置、标签或布尔值的方式访问 Series,其中,位置和标签的关系如下图所示。图 2 Series中位置和标签的关系
1、位置
1) 默认位置
可以通过 Series[pos] 的格式访问 Series,并获取 Series 中的元素,其中,Series 表示 Series 对象,pos 表示位置。示例代码如下:
import pandas as pd data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) print(s[0])
2) 位置列表
可以通过 Series[list] 的格式访问 Series,并获取新的 Series,其中,Series 表示 Series 对象,list 表示由位置组成的列表。示例代码如下:
import pandas as pd data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) lt=[1,3] print(s[lt])
3) 位置数组对象
可以通过 Series[ndarray] 的格式访问 Series,并获取新的 Series,其中,Series 表示 Series 对象,ndarray 表示由位置组成的数组对象。示例代码如下:
import pandas as pd import numpy as np data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) nnp=np.array([0,2]) print(s[nnp])
4) 位置切片
可以通过 Series[start:end:step] 的格式访问 Series,并获取新的 Series,其中,Series 表示 Series 对象,start 表示开始位置,参数 end 表示结束位置,step 表示步长。需要注意的是,使用该格式获取的 Series 包括开始位置所对应的元素,但不包括结束位置所对应的元素。
示例代码如下:
import pandas as pd data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) print(s[0:4:2]) print('========================') print(s[0:4]) print('========================') print(s[:1])
2、标签
1) 指定标签
可以通过 Series[index] 的格式访问 Series,并获取 Series 中的元素,其中,Series 表示 Series 对象,index 表示标签名。示例代码如下:
import pandas as pd data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) print(s['a'])
2) 标签列表
可以通过 Series[list] 的格式访问 Series,并获取新的 Series,其中,Series 表示 Series 对象,list 表示由标签组成的列表。示例代码如下:
import pandas as pd data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) lt=['c','d'] print(s[lt])
3) 标签数组对象
可以通过 Series[ndarray] 的格式访问 Series,并获取新的 Series,其中,Series 表示 Series 对象,ndarray 表示由标签组成的数组对象。示例代码如下:
import pandas as pd import numpy as np data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) nnp=np.array(['a','b']) print(s[nnp])
4) 标签切片
可以通过 Series[start:end:step] 的格式访问 Series,并获取新的 Series,其中,Series 表示 Series 对象,start 表示开始标签,参数 end 表示结束标签,step 表示步长。需要注意的是,使用该格式获取的 Series 包括开始标签和结束标签所对应的元素,示例代码如下:
import pandas as pd data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) print(s['a':'d':2]) print('========================') print(s['a':'d']) print('========================') print(s[:'b'])
3、布尔值
1) 布尔值列表
可以通过 Series[list] 的格式访问 Series,并获取过滤后的 Series,其中,Series 表示 Series 对象,list 表示由布尔值组成的列表,并且当值为 True 时,其对应的元素保留,否则舍弃。需要注意的是,布尔值列表中的元素个数必须与 Series 中的元素个数相等,示例代码如下:
import pandas as pd data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) bl=[True,False,True,False] print(s[bl])
2) 布尔值数组对象
可以通过 Series[ndarray] 的格式访问 Series,并获取过滤后的 Series,其中,Series 表示 Series 对象,ndarray 表示由布尔值组成的数组对象,并且当值为 True 时,其对应的元素保留,否则舍弃。需要注意的是,布尔值数组对象中的元素个数必须与 Series 中的元素个数相等,示例代码如下:
import pandas as pd import numpy as np data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) nnp=np.array([True,False,True,False]) print(s[nnp])
3) 布尔值Series
可以通过 Series[Series] 的格式访问 Series,并获取过滤后的 Series,其中,第 1 个 Series 表示 Series 对象,第 2 个 Series 表示由布尔值组成的 Series 对象,并且当值为 True 时,其对应的元素保留,否则舍弃。需要注意的是,布尔值 Series 中的元素个数必须与 Series 中的元素个数相等,示例代码如下:
import pandas as pd data={'a':3,'b':2,'c':0,'d':1} s=pd.Series(data) bs=pd.Series({'a':False,'b':True,'c':False,'d':True}) print(s[bs])
4) 布尔值运算表达式
可以通过 Series[expression] 的格式访问 Series,并获取过滤后的 Series,其中,Series 表示 Series 对象,expression 表示布尔值运算表达式,用于保留符合布尔值运算表达式条件的元素。示例代码如下:
import pandas as pd # 创建一个字典data,其中包含键值对 data = {'a': 3, 'b': 2, 'c': 0, 'd': 1} # 使用字典data创建一个Series对象s s = pd.Series(data) # 打印Series s中大于1的元素 print(s[s > 1])