Pandas Series对象的创建和基本使用(Pandas Series Object)

pandas是Python的一个第三方数据分析库,其集成了大量的数据模型和分析工具,可以方便的处理和分析各类数据。Pandas中主要对象类型有Series,DataFrame和Index。本文介绍Series对象的创建和基本用法。

一、Series对象的创建

使用下面的命令可以安装pandas:

pip install pandas

首次使用时需先导入pandas模块:

import pandas as pd

在这里插入图片描述

Series对象是带标签的一维同构数组,它采用pandas中Series类构造函数创建,语法是:

s = pd.Series(data, index=index)
  • data是基础数据,可以是序列、字典、Numpy数组、常量等
  • index是标签,如果忽略则默认生成从0开始,1为步长的等差数列作为标签,即1,2,3,4……

1.1 通过序列创建Series

可以通过给pd.Series函数传入列表,元组等序列来生成Series对象。

通过列表创建Series,由于没有指定index参数,因此默认的标签是0,1,2,3,4:

s1 = pd.Series([1,2,3,4,5])

在这里插入图片描述

通过元组创建Series,并通过index参数指定标签为abcde,Index必须和元素长度相同,但可以不唯一:

s2 = pd.Series((1,2,3,4,5), index=['a','b','c','a','b'])

在这里插入图片描述

1.2 通过NumPy数组创建Series

这里先通过np.random.randn(5)生成NumPy数组对象,然后再转换为Series对象:

s3 = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])

在这里插入图片描述

1.3 通过字典创建Series

通过Python字典也可以生成Series对象,由于字典本身就是键-值对,因此键会自动作为Series对象的标签:

d = dict(a=1, b=2, c=3, d=4, e=5)
s4 = pd.Series(d)

在这里插入图片描述

使用字典创建时如果指定index对象,那么只有和index指定的索引匹配元素会被抽取出来,index中未匹配的索引会用NaN填充:

s5 = pd.Series(d, index=list('abcdx'))

在这里插入图片描述
上面例子中,字典中{‘e’:5}元素和index中索引不匹配,所以未出现在Series中。而index指定的标签’x’在字典中也无对应的键,所以用NaN(在Pandas中代表空)填充。

1.4 通过常量创建Series

如果仅指定一个常量,那么则会按照index指定的索引长度进行复制填充:

s6 = pd.Series(10, index=list('abcde'))

在这里插入图片描述

二、Series对象的引用

Series对象和普通序列一样可以通过标签或者位置对元素进行引用,还支持切片等操作。

2.1 通过标签引用

通过标签引用和Python中引用字典键的方式相同,它会返回标签对应的元素:

s6['a']

在这里插入图片描述

但如果标签不存在则会报错:

s6['x']

在这里插入图片描述

通过标签也可以进行切片,注意切片包含结尾:

s6['a':'c']

在这里插入图片描述

2.2 通过s.get()函数引用

通过s.get()函数可以通过标签引用单一元素(无法切片),但是当标签不存在时,它会返回None而不是报错,甚至可以在标签不存在时返回自定义值:

s6.get('a')

在这里插入图片描述

对于不存在的标签,定义返回999:

s6.get('x', 999)

在这里插入图片描述

2.3 通过.loc使用标签引用

Series的.loc属性也可用通过标签进行引用:

s6.loc['a']

在这里插入图片描述

2.4 通过.iloc使用位置引用

位置就是各个元素的位置编号,从0开始,与标签无关:
s6.iloc[0]
在这里插入图片描述

切片时,注意结尾是不包含的:

s6.iloc[0:2]

在这里插入图片描述
注意位置编号为2的元素并不在返回结果中,这点和.loc不同。

关于.loc和.iloc属性的详细用法和解释可以参考下面的文章:
Python 利用pandas处理CSV文件(DataFrame的基础用法)

三、Series对象的修改

Series对象创建后,我们也需要对它进行修改。

3.1 新增元素

通过指定不存在的标签和元素就可以添加新元素,这里添加一个不存在的索引’x’,其对应的值为999:

s6['x'] = 999

在这里插入图片描述

如果要将两个Series拼接起来,可以用pd.concat函数,以元组或列表的方式传入要拼接的Series对象,这里将s1和s2拼接起来:

pd.concat([s1,s2])

在这里插入图片描述

注意上面的拼接结果保留了各自的标签,使用ignore_index=True可以忽略原标签,重新生成标签:

pd.concat([s1,s2], ignore_index=True)

在这里插入图片描述

3.2 删除元素

删除元素可以在引用时使用del命令或者drop方法:

del s6['x']

在这里插入图片描述

使用drop方法删除元素’e’,注意drop方法默认是返回删除后的副本,原Series对象是不变的,再次查看元素’e’依然存在:

s6.drop('e')
s6

在这里插入图片描述

如果要在原Series上删除,需要指定inplace=True参数:

s6.drop('e', inplace=True)
s6

在这里插入图片描述

3.3 修改元素

只需要引用元素并重新赋值就可以修改元素值:

s6['a'] = 100

在这里插入图片描述

如果是切片的方式,可以同时修改多个元素值:

s6.loc['b':'d'] = 999

在这里插入图片描述

四、Series对象的常用属性

除了上面提到的.loc和.iloc,Series对象还有一些常用方便我们查询Series的相关信息。

4.1 name属性

name属性是Series名称,默认是空,你可以给这个属性赋值来对Series进行命名:

s6.name = 'ABC'

在这里插入图片描述

4.2 size属性

size属性可以查询Series中的元素个数:

s6.size

在这里插入图片描述

4.3 is_unique属性

is_unique属性可以快速判断Series中元素是否唯一,如果唯一则返回True:

s1.is_unique
s6.is_unique

在这里插入图片描述

4.4 dtype属性

dtype属性返回的是Series中元素的类型,例如下面s2的dtype就是int64(64位整型):

s2.dtype

在这里插入图片描述

由于Series是同构数组,如果加入其他类型的元素,则dtype会进行改变以兼容所有元素,下面加入一个浮点型元素,所有元素都会变为浮点型,dtype变为float64:

s2['e'] = 6.0
s2

在这里插入图片描述

再加入一个字符串元素,由于float64无法兼容字符串,Series的dtype属性自动转换为object(可以兼容所有类型数据):

s2['f'] = 'abc'
s2

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值