文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Pandas中Series怎么用

2023-06-29 18:17

关注

这篇文章给大家分享的是有关Pandas中Series怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一. Series 简介

Series是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象

Series 总的来说就是带标签的一维数组,可存储整数、浮点数、字符串、Python对象等类型的数据。标签轴通常叫做索引。

二. 实例化 Series

2.1 使用一维数组实例化

用一维数组实例化Series时,索引长度必须与数组长度一致。没有指定索引时,Pandas会帮我们创建默认的数值型索引。

In [1]: s1 = pd.Series([1, 2, 3, 4])Out[1]:01122334dtype: int64In [2]: s2 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])Out[2]:a1b2c3d4dtype: int64

注意: Pandas 是支持重复索引的。但我们也可以重置索引,具体操作方法在后续章节中会给出。

2.2 使用字典实例化

使用字典实例化Series时, 如果未传入索引,则索引的值为字典的key:

In [1]: pd.Series({'i': 0, 'j': 1, 'k': 2})Out[1]: i    0j    1k    2dtype: int64

2.3 使用标量例化

使用标量值实例化时,必须提供索引。Series 按索引长度重复该标量值。

In [1]: pd.Series(6, index=[0, 1, 2])Out[1]: 0    61    62    6dtype: int64

三.Series 简单使用

3.1 为Series添加Name属性

在实例化Series时,可以传入name参数为Series添加name属性。同时,Seires也支持重命名:

In [1]: s = pd.Series(6, index=[0, 1, 2], name='six')Out[1]: 0    61    62    6Name: six, dtype: int64In [2]: s.nameOut[2]: 'six'In [3]: s = s.rename('sixsixsix')In [4]: s.nameOut[4]: 'sixsixsix'

3.2 基于位置的切片

Series提供了类似于Python列表的切片方式:

In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])In[1]: s[0:2] #取下标为0和1的两个数据(不包括2,也就是从第一个开始取,取两个数据)Out[1]:a    1b    2dtype: int64In[2]: s[:3] #取前三个数据Out[2]:a    1b    2c    3dtype: int64In[3]: s[-2:] #取最后两个数据(也可以理解为从倒查第二个数据一直取到末尾)Out[3]:c    3d    4dtype: int64In[4]: s[[0,2,3]] #取第1、3、4这个三个数据(注意下标是从0开始的,转换为位置时需+1)Out[4]:a    1c    3d    4dtype: int64#注意:如果输入的位置大于列表的长度则会报出“indexers are out-of-bounds”异常

3.3 基于索引的切片

Series可使用索引标签的值来提取值:

In [0]:s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])In [1]: s['a'] #提取s中,标签为a的值Out[1]:a    1dtype: int64In [1]: s[['a', 'b', 'c']] #提取s中,标签为a, b, c的值Out[1]:a    1b    2c    3dtype: int64

如果传入的索引标签的值不在Seires的轴索引中,那将会报 KeyError 异常,这里建议大家使用Series的 get 方法获取值,如果不存在,则会返回None,同时也可设置default参数,用于不存在时的默认返回值。

In [0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])In [1]: s['f'] #提取s中,标签为f的值, f不存在,将会报出异常Out[1]:KeyErrorIn [2]:s.get('f') #提取s中,标签为f的值, 若f不存在,默认返回NoneOut[2]:NoneIn [3]:s.get('f'. default=-1) #提取s中,标签为f的值, 若f不存在,返回-1Out[3]:-1

3.4 基于条件的切片

In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])In[1]: s[s < 2] #提取s中,小于2的值Out[1]:a    1b    2dtype: int64In[1]: s[s> s.mean()] #提取s中,大于平均数的值Out[1]:c    3d    4dtype: int64In[1]: s[s.between(1, 3, inclusive=False)] #提取s中,值介于1,3之间的数据(不包含1,3)Out[1]:b    2dtype: int64

在提取区间数据时,如果想让两端的值包含其中(满足两端的值也被提取出来),只需要把 inclusive 参数的值赋为True

3.5 其他操作

Series 不用循环也可以像操作单个数值一样快速进行数学运算:

In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])In[1]: s + sOut[1]:a    2b    4c    6d    8dtype: int64In[2]: s - 1Out[2]:a    0b    1c    2d    3dtype: int64

Series 之间的操作会自动 基于标签 对齐数据. 如果一个Series中的标签在另一个Series中不存在,那么计算得到的结果将是NaN,即缺失值,有缺失值NaN的处理在后续章节也会讲到。因此,我们不用顾及执行操作的Series是否有相同的标签。 Pandas数据结构集成的数据对齐的功能,是Pandas区别于大多数标签型数据处理工具的重要特性。

In[0]: s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])In[0]: s2 = pd.Series([3, 6, 11], index=['a', 'b', 'f'])In[1]: s1 + s2Out[1]:a   4.0b   8.0c   NaNd   NaNf   NaNdtype: float64

感谢各位的阅读!关于“Pandas中Series怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯