Pandas数据结构之Series的使用


Posted in Python onMarch 31, 2022

一. Series 简介

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

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

二. 实例化 Series

2.1 使用一维数组实例化

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

In [1]: s1 = pd.Series([1, 2, 3, 4])
Out[1]:
0	1
1	2
2	3
3	4
dtype: int64

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

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

2.2 使用字典实例化

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

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

2.3 使用标量例化

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

In [1]: pd.Series(6, index=[0, 1, 2])
Out[1]: 
0    6
1    6
2    6
dtype: 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    6
1    6
2    6
Name: six, dtype: int64

In [2]: s.name
Out[2]: 'six'

In [3]: s = s.rename('sixsixsix')
In [4]: s.name
Out[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    1
b    2
dtype: int64

In[2]: s[:3] 	#取前三个数据
Out[2]:
a    1
b    2
c    3
dtype: int64

In[3]: s[-2:] 	#取最后两个数据(也可以理解为从倒查第二个数据一直取到末尾)
Out[3]:
c    3
d    4
dtype: int64

In[4]: s[[0,2,3]] 	#取第1、3、4这个三个数据(注意下标是从0开始的,转换为位置时需+1)
Out[4]:
a    1
c    3
d    4
dtype: 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    1
dtype: int64

In [1]: s[['a', 'b', 'c']] 	#提取s中,标签为a, b, c的值
Out[1]:
a    1
b    2
c    3
dtype: 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]:KeyError

In [2]:s.get('f') #提取s中,标签为f的值, 若f不存在,默认返回None
Out[2]:None

In [3]:s.get('f'. default=-1) #提取s中,标签为f的值, 若f不存在,返回-1
Out[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    1
b    2
dtype: int64

In[1]: s[s> s.mean()] 	#提取s中,大于平均数的值
Out[1]:
c    3
d    4
dtype: int64

In[1]: s[s.between(1, 3, inclusive=False)] 	#提取s中,值介于1,3之间的数据(不包含1,3)
Out[1]:
b    2
dtype: int64

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

3.5 其他操作

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

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

In[2]: s - 1
Out[2]:
a    0
b    1
c    2
d    3
dtype: 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 + s2
Out[1]:
a   4.0
b   8.0
c   NaN
d   NaN
f   NaN
dtype: float64

到此这篇关于Pandas数据结构之Series的使用的文章就介绍到这了,更多相关Pandas Series使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
Python实现重建二叉树的三种方法详解
Jun 23 Python
Python切片操作去除字符串首尾的空格
Apr 22 Python
python:按行读入,排序然后输出的方法
Jul 20 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
Django Path转换器自定义及正则代码实例
May 29 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
Python实现爬取网页中动态加载的数据
Aug 17 Python
python UDF 实现对csv批量md5加密操作
Jan 01 Python
教你如何使用Python下载B站视频的详细教程
Apr 29 Python
基于Python绘制子图及子图刻度的变换等的问题
May 23 Python
python获取字符串中的email
Mar 31 #Python
Python利用FlashText算法实现替换字符串
详解Python flask的前后端交互
Mar 31 #Python
ubuntu安装jupyter并设置远程访问的实现
Python中time与datetime模块使用方法详解
Mar 31 #Python
Python用tkinter实现自定义记事本的方法详解
Mar 31 #Python
Python利用zhdate模块实现农历日期处理
Mar 31 #Python
You might like
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
PHP聊天室技术
2006/10/09 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
JavaScript中var的重要性实例分析
2019/07/09 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
python实现sublime3的less编译插件示例
2014/04/27 Python
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
opencv实现图像几何变换
2021/03/24 Python
给客户的道歉信
2014/01/13 职场文书
家庭教育的心得体会
2014/09/01 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
大学团日活动总结书
2015/05/11 职场文书
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技