【Python从入门到进阶】58、Pandas库中Series对象的操作(一)

接上篇《57、Pandas入门指南:背景、应用场景与基本操作》
上一篇我们讲解了Pandas的背景以及应用场景与基本操作,本篇我们来讲解Pandas库中Series对象的基本概念和相关操作。

一、引言

Pandas库中的Series对象是其核心数据结构之一,它在数据分析中扮演着重要的角色。Series可以视为一种带有标签的一维数组,能够高效地处理各种类型的数据。

首先,Series类似于一维数组,但与之不同的是,Series的每个元素都拥有一个标签,这些标签被称为“索引”(index)。这种标签化的特性使得Series在数据分析和处理中非常灵活和方便。

其次,Series可以存储多种类型的数据,包括但不限于整数(int)、浮点数(float)、字符串(str)、布尔值(bool)、Python对象等。这种数据类型的多样性使得Series能够处理各种复杂的数据集,并满足各种数据分析和处理的需求。

在Pandas中,Series对象具有许多实用的属性和方法,如索引(index)、数据(values)、数据类型(dtype)、形状(shape)等属性,以及切片、筛选、排序、运算等操作。这些属性和方法使得我们可以方便地对数据进行各种处理和分析。

此外,Series对象还可以与Pandas中的另一个核心数据结构——DataFrame进行交互。DataFrame是一个二维的、大小可变的、且可以包含异构类型列的表格型数据结构,而Series则可以被视为DataFrame的一列。因此,我们可以通过将Series对象嵌入到DataFrame中,来实现更复杂的数据处理和分析任务。

总之,Pandas库中的Series对象是一种强大而灵活的数据结构,它不仅能够存储多种类型的数据,而且具有许多实用的属性和方法,可以帮助我们高效地进行数据分析和处理。在接下来的内容中,我们将详细介绍Series对象的创建、基本属性、数据操作、运算等方面的内容,并通过案例实践来展示其应用。

二、Series对象的创建

在Pandas库中,Series对象可以通过多种方式创建。这些方式主要基于Python中常见的数据结构,如列表、字典、NumPy数组等。以下是几种常见的创建Series对象的方法:

1、使用列表创建Series

当我们有一个包含数据的列表,并且想要将其转换为一个带有索引的Series对象时,可以直接使用Pandas的Series()函数。默认情况下,列表中的元素会成为Series的数据,而索引则会自动从0开始递增。

import pandas as pd  
  
data = [1, 2, 3, 4, 5]  
s = pd.Series(data)  
print(s)  
# 输出:  
# 0    1  
# 1    2  
# 2    3  
# 3    4  
# 4    5  
# dtype: int64

如果希望自定义索引,可以传递一个额外的参数index给Series()函数。

index = ['a', 'b', 'c', 'd', 'e']  
s = pd.Series(data, index=index)  
print(s)  
# 输出:  
# a    1  
# b    2  
# c    3  
# d    4  
# e    5  
# dtype: int64

2、使用字典创建Series

字典是Python中用于存储键值对的数据结构。在创建Series时,字典的键会被用作索引,而值则成为数据。

dict_data = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}  
s = pd.Series(dict_data)  
print(s)  
# 输出:  
# a    1  
# b    2  
# c    3  
# d    4  
# e    5  
# dtype: int64

如果字典的键不是唯一的,Pandas会保留最后一个出现的值。

3、使用NumPy数组创建Series

NumPy是Python中用于科学计算的库,它提供了高效的数组和矩阵运算。当我们有一个NumPy数组时,可以直接将其传递给Series()函数来创建一个Series对象。

import numpy as np  
  
np_data = np.array([1, 2, 3, 4, 5])  
s = pd.Series(np_data)  
print(s)  
# 输出:  
# 0    1  
# 1    2  
# 2    3  
# 3    4  
# 4    5  
# dtype: int64

同样,我们也可以指定索引。

index = ['a', 'b', 'c', 'd', 'e']  
s = pd.Series(np_data, index=index)  
print(s)  
# 输出:  
# a    1  
# b    2  
# c    3  
# d    4  
# e    5  
# dtype: int64

4、使用标量值创建Series

如果我们想创建一个所有元素都相同的Series,可以传递一个标量值(如整数、浮点数、字符串等)给Series()函数,并指定索引的长度。

index = ['a', 'b', 'c', 'd', 'e']  
s = pd.Series(1, index=index)  
print(s)  
# 输出:  
# a    1  
# b    1  
# c    1  
# d    1  
# e    1  
# dtype: int64

5、从其他数据结构创建Series

Pandas还支持从其他数据结构(如CSV文件、Excel文件、SQL数据库等)中读取数据并创建Series对象。这通常涉及到使用Pandas的read_csv()、read_excel()等函数,但这些内容超出了本节的讨论范围。

总之,Pandas提供了多种灵活的方式来创建Series对象,使得我们能够方便地将各种类型的数据转换为Pandas的数据结构进行后续处理和分析。

三、Series对象的基本属性

Series对象在Pandas库中提供了多种基本属性,这些属性帮助我们快速获取关于数据序列的重要信息。以下是Series对象的一些基本属性及其描述:

1、index

index属性用于获取Series对象的索引标签。这些标签默认是整数,从0开始递增,但也可以在创建Series时自定义。

import pandas as pd  
 
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])  
print(s.index)  
# 输出: Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

2、values

values属性返回一个NumPy数组,其中包含Series中的数据。这个属性提供了对数据的直接访问,允许我们使用NumPy的函数和方法来操作数据。

s = pd.Series([1, 2, 3, 4, 5])  
print(s.values)  
# 输出: array([1, 2, 3, 4, 5])

3、dtype

dtype属性用于获取Series中数据的数据类型。Pandas会根据数据的内容自动推断数据类型,如整数、浮点数、字符串等。

s = pd.Series(['a', 'b', 'c', 'd', 'e'])  
print(s.dtype)  
# 输出: dtype('O')  # 注意:'O'表示对象类型,通常用于存储字符串  
 
s = pd.Series([1, 2, 3, 4, 5])  
print(s.dtype)  
# 输出: dtype('int64')

4、shape

shape属性返回一个元组,表示Series的维度。对于Series来说,它总是返回一个包含一个元素的元组,表示数据的长度。

s = pd.Series([1, 2, 3, 4, 5])  
print(s.shape)  
# 输出: (5,)

5、size

size属性返回Series中元素的数量,即数据的长度。这个属性是一个整数,等价于len(series)。

s = pd.Series([1, 2, 3, 4, 5])  
print(s.size)  
# 输出: 5

6、name

name属性用于获取或设置Series的名称。这个属性通常用于在DataFrame中标识不同的列。

s = pd.Series([1, 2, 3, 4, 5], name='example')  
print(s.name)  
# 输出: example  
 
s.name = 'new_name'  
print(s.name)  
# 输出: new_name

7、axes

axes属性返回一个包含Series索引的列表。对于Series来说,它只包含一个索引轴。

s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])  
print(s.axes)  
# 输出: [Index(['a', 'b', 'c', 'd', 'e'], dtype='object')]

8、nbytes

nbytes属性返回Series对象在内存中占用的字节数。这个属性对于了解数据集的内存使用情况很有用。

s = pd.Series([1, 2, 3, 4, 5])  
print(s.nbytes)  
# 输出会根据Series的数据类型和大小有所不同

9、头部和尾部数据查看

Series的头部和尾部数据查看,使用head()、tail()函数:

import pandas as pd

data = [1,2,3,4,5]
s = pd.Series(data)
print("[头部第一个数据]\n", s.head(1))
print("[尾部后两个数据]\n", s.tail(2))
# 输出:
# [头部第一个数据]
#  0    1
# dtype: int64
# [尾部后两个数据]
#  3    4
#  4    5

这些基本属性为我们提供了关于Series对象的重要信息,使我们能够更好地理解和操作数据。

四、Series对象的数据操作

Pandas的Series对象提供了丰富的数据操作方法,这些方法使得我们可以轻松地对数据进行各种处理和分析。以下是Series对象的一些常用数据操作方法:

1、索引和切片

Series对象支持基于标签的索引和基于位置的切片操作。我们可以使用索引标签来访问单个元素或子集,也可以使用切片语法来访问连续的元素范围。

import pandas as pd  
  
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])  
  
# 基于标签的索引  
print(s['a'])  # 输出: 1  
  
# 基于位置的切片  
print(s[1:4])  # 输出: b    2  
                #      c    3  
                #      d    4  
                # dtype: int64

2、修改数据

Series对象是可变的,我们可以直接修改其元素的值。

s['a'] = 10  
print(s)  # 输出: a    10  
          #      b     2  
          #      c     3  
          #      d     4  
          #      e     5  
          # dtype: int64

3、算术运算

Series对象支持常见的算术运算,如加法、减法、乘法、除法等。这些运算可以在Series之间、Series与标量之间进行。

s1 = pd.Series([1, 2, 3, 4, 5])  
s2 = pd.Series([10, 20, 30, 40, 50])  
  
# Series之间的加法  
print(s1 + s2)  # 输出: 0    11  
                #      1    22  
                #      2    33  
                #      3    44  
                #      4    55  
                # dtype: int64  
  
# Series与标量的加法  
print(s1 + 1)  # 输出: 0    2  
                #      1    3  
                #      2    4  
                #      3    5  
                #      4    6  
                # dtype: int64

4、比较运算

Series对象还支持比较运算,如等于、不等于、大于、小于等。这些运算的结果是一个布尔型的Series对象。

print(s1 > 2)  # 输出: 0    False  
                #      1    False  
                #      2     True  
                #      3     True  
                #      4     True  
                # dtype: bool

5、排序

使用sort_values()方法可以对Series对象进行排序。默认情况下,数据按升序排序,但也可以指定ascending=False进行降序排序。

s = pd.Series([5, 1, 4, 2, 3])  
print(s.sort_values())  # 输出: 0    1  
                        #      3    2  
                        #      4    3  
                        #      2    4  
                        #      1    5  
                        # dtype: int64

6、唯一值和计数

使用unique()方法可以获取Series对象中的唯一值,而value_counts()方法则可以计算每个唯一值出现的次数。

s = pd.Series(['cat', 'dog', 'cat', 'elephant', 'elephant', 'dog'])  
print(s.unique())  # 输出: array(['cat', 'dog', 'elephant'], dtype=object)  
print(s.value_counts())  # 输出: elephant      2  
                         # cat           2  
                         # dog           2  
                         # dtype: int64

7、数据映射

使用map()方法可以将Series中的每个元素映射到另一个值。这通常与字典一起使用,字典的键是原始值,值是映射后的值。

s = pd.Series(['cat', 'dog', 'elephant'])  
mapping = {'cat': 'kitten', 'dog': 'puppy', 'elephant': 'baby elephant'}  
print(s.map(mapping))  # 输出: 0         kitten  
                       # 1          puppy  
                       # 2    baby elephant  
                       # dtype: object

8、字符串方法

如果Series对象包含字符串类型的数据,那么可以调用字符串方法来处理这些数据。Pandas会自动将方法应用于每个元素。以下是一个例子,使用str.replace()方法将Series对象中每一个'a'替换为'b':

import pandas as pd  
  
# 创建一个包含字符串的Series对象  
s = pd.Series(['apple', 'banana', 'cat', 'data', 'elephant'])  
  
# 使用str.replace()方法将'a'替换为'b'  
s_replaced = s.str.replace('a', 'b')  
  
print(s_replaced)  
# 输出:  
# 0       bpple  
# 1     bbnbnb  
# 2         cbt  
# 3       dbtb  
# 4    elephant  
# dtype: object

关于Series对象操作的第一部分介绍完毕。下一篇我们继续学习Series对象的运算、函数用于、时间序列操作,以及Series的案例实践。

转载请注明出处:https://guangzai.blog.csdn.net/article/details/139723986

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/714377.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

checkbox表单校验 至少选中一个Checkbox , 否则会报错

项目背景 : react ant 需求 : 需实现至少选中一个Checkbox , 否则会报错 需求如下 : 注意 : Input, Select, DatePicker可以直接处理Form.Item的验证规则 , 但Checkbox不行 , 需自定义验证规则 实现 : // 自定义的checkbox校验规则--星期const validateAtLeastOneCheckbo…

面试题 17.07. 婴儿名字

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; class Solution { public:vector<string> trulyMostPopular(vector<string>& names, vector<string>& synonyms) {UnionFind uf;for (auto& syn : synonyms) {//c…

【计算机毕业设计】241外卖微信小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【探索Linux】P.34(HTTPS协议)

阅读导航 引言一、HTTPS是什么1. 什么是"加密"2. 为什么要加密3. 常见的加密方式&#xff08;1&#xff09;对称加密&#xff08;2&#xff09;非对称加密 二、证书认证1. CA认证 三、HTTPS的加密底层原理✅非对称加密对称加密证书认证 温馨提示 引言 在上一篇文章中…

@EqualsAndHashCode(callSuper = false和ture)的区别

EqualsAndHashCode&#xff08;callSuper false和ture&#xff09;的区别 区别 如果值是true&#xff0c;那么会比较父类的字段值&#xff0c;只有两个对象的父类字段也相同的时候&#xff0c;两个对象的比较结果才会是true&#xff1b;如果值是fasle&#xff0c;那么既便两个…

Weevil-Optimizer象鼻虫优化算法的matlab仿真实现

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 Weevil-Optimizer象鼻虫优化算法的matlab仿真实现&#xff0c;仿真输出算法的优化收敛曲线&#xff0c;对比不同的适应度函数。 2.测试软件版本以及运行结果展示…

SpringBoot实现的大文件上传

前言 大文件分片上传和断点续传是为了解决在网络传输过程中可能遇到的问题&#xff0c;以提高文件传输的效率和稳定性。 首先&#xff0c;大文件分片上传是将大文件分割成较小的片段进行上传。这样做的好处是可以减少单个文件的传输时间&#xff0c;因为较小的文件片段更容易快…

【秋招突围】2024届秋招笔试-小红书笔试题-第二套-三语言题解(Java/Cpp/Python)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系计划跟新各公司春秋招的笔试题 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f4e7; 清隆这边…

高频小信号放大器的分类与质量指标

目录 分类 质量指标 增益 通频带 选择性 稳定性 噪声系数 分类 质量指标 增益 电压与功率的放大倍数。 通频带 放大效果比较好的频率范围。 选择性 放大目标信号以滤除其他信号的综合能力。 稳定性 噪声系数

chatglm4本地部署详解

下载地址 模型下载地址&#xff1a;GitHub - THUDM/GLM-4: GLM-4 series: Open Multilingual Multimodal Chat LMs | 开源多语言多模态对话模型 已经训练好的数据下载地址&#xff1a; https://huggingface.co/THUDM/glm-4-9b-chat-1m/tree/main 测试主机配置 cpu&#xff1a;E…

pdf转图片,pdf转图片在线转

pdf转图片的方法&#xff0c;对于许多人来说可能是一个稍显陌生的操作。然而&#xff0c;在日常生活和工作中&#xff0c;我们有时确实需要将pdf文件转换为图片格式&#xff0c;以便于在特定的场合或平台上进行分享、展示或编辑。以下&#xff0c;我们将详细介绍一个pdf转成图片…

【网络安全的神秘世界】AppScan安装及使用指南

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 https://www.hcl-software.com/appscan AppScan是一种综合型漏洞扫描工具&#xff0c;采用SaaS解决方案&#xff0c;它将所以测试功能整合到一个服务中&a…

Java基础——网络编程(一)

初识网络编程 网络编程&#xff1a;在网络通信协议下&#xff0c;不同计算机上运行的程序&#xff0c;进行的数据传输 应用场景&#xff1a;即时通信、网游对战、金融证券、国际贸易、邮件…… BS架构的优缺点&#xff1a; 1、不需要开发客户端&#xff0c;只需要页面服务端 2、…

Redis 键空间迭代 Scan

引言 在平时线上Redis维护工作中&#xff0c;有时候需要从Redis实例成千上万的key中找出特定前缀的key列表来手动处理数据&#xff0c;可能是修改他的值&#xff0c;也可能是删除key。 Redis提供了一个简单暴力的指令keys用来列出所有满足特定正则字符串规则的key。 127.0.0…

26.1 WEB框架介绍

1. Web应用程序 1.1 应用程序有两种模式 应用程序的架构模式主要分为两种: C/S (客户端/服务器端)和B/S(浏览器/服务器端). * 1. C/S模式, 即客户端/服务器模式(Client/Server Model): 是一种分布式计算模式.它将应用程序的功能划分为客户端和服务器端两部分.在这种模式下, 客…

几种经典排序算法

几种经典排序算法 插入排序折半插入排序法 选择排序冒泡排序希尔排序堆排序二路归并排序快速排序 在介绍排序之前&#xff0c;先来说说&#xff0c;研究不同的排序主要是要研究他们的哪些不同&#xff1a; 时间性能。即排序过程中元素之间的比较次数与元素移动次数。我们此次讨…

【最新鸿蒙应用开发】——鸿蒙中的“Slot插槽”?@BuilderParam

构建函数-BuilderParam 传递 UI 1. 引言 BuilderParam 该装饰器用于声明任意UI描述的一个元素&#xff0c;类似slot占位符。 简而言之&#xff1a;就是自定义组件允许外部传递 UI Entry Component struct Index {build() {Column({ space: 15 }) {SonCom() {// 直接传递进来…

IPv6 ND 协议功能概述

ND 协议功能概述 ND&#xff08;Neighbor Discovery&#xff0c;邻居发现&#xff09;协议是 IPv6 的一个关键协议&#xff0c;它综合了 IPv4 中的 ARP&#xff0c;ICMP 路由发现和 ICMP 重定向等协议&#xff0c;并对它们做了改进。 作为 IPv6 的基础性协议&#xff0c;ND 协…

ppt添加圆角矩形,并调整圆角弧度方法

一、背景 我们看的论文&#xff0c;许多好看的图都是用PPT做的&#xff0c;下面介绍用ppt添加圆角矩形&#xff0c;并调整圆角弧度方法。 二、ppt添加圆角矩形&#xff0c;并调整圆角弧度 添加矩形&#xff1a; 在顶部工具栏中&#xff0c;点击“插入”选项卡。 在“插图”…

冒泡排序知识点

排序的基本概念 排序是计算机内经常进行的一种操作&#xff0c;其目的是将一组“无序”的记录调整为“有序”的记录序列。 常用的排序例子 8 7 1 5 4 2 6 3 9 把上面的这个无序序列变为有序&#xff08;升序或者降序&#xff09;序列的过程。 1 2 3 4 5 6 7 8 9&#xff0…