Pandas Series对象创建,属性,索引及运算详解
目录
Series对象创建
实例化参数
index参数
选用array-like创建Series对象
list
ndarray
显示索引与隐式索引
选用dict创建Series对象
不指定索引
指定索引
选用标量创建Series对象
使用标量创建的广播机制
Series属性
name
size
shape
index
values
Series索引取值
Series对象[索引名]及Series对象.索引名
Series对象.iloc[]
索引取值后修改
Series数值运算
广播机制演示
使用Numpy运算函数
Series对象创建
实例化参数
def __init__(self,data=None,index=None,dtype: Dtype | None = None,name=None,copy: bool | None = None,fastpath: bool | lib.NoDefault = lib.no_default, ) -> None:
其中data为穿入的数据,数据类型一般为array-like,也可以穿入自建类型数据,index参数为Series对象的索引,也可称作为标签,dtype为单位元素数据类型的指定,name为Series对象的名称,如将Series对象导入DataFrame中,name将默认作为列名存在
index参数
Series对象实际是具有字典属性的array-like数据类型,原因在于Series对象为一维数据,在DataFrame二维表中,每一列或行单独取出都为一个Series参数,若取行,则列名则为Series对象的index,反之若取列,则行索引为index
index可分为隐式索引和显示索引
隐式索引为常规从0开始至长度-1的index
显示索引可以手动设置index,index列表中的每一项按序作为对应元素的索引
选用array-like创建Series对象
这里选用list及ndarray作为data参数传入演示及区别详解
list
选用list对象作为数据传入Series对象进行实例化的时候,创建的为副本对象,也就是说Series与list并不共享内存
import numpy as np
import pandas as pddata1 = pd.Series(data=[1,2,3])
print(data1)
# 0 1
# 1 2
# 2 3
# dtype: int64
ndarray
使用ndarray对象作为数据传入Series对象进行实例化的时候,创建的为一个与原ndarray共享内存的Series对象
import numpy as np
import pandas as pdarr = np.array([1,2,3])
data1 = pd.Series(data=arr)
print(data1)
arr[1] = 100
print(data1)
# 0 1
# 1 2
# 2 3
# dtype: int32
# 0 1
# 1 100
# 2 3
# dtype: int32
可以看到在进行原ndarray的修改后Series对象也发生了改变,这里可以使用.copy()来进行深拷贝
import numpy as np
import pandas as pdarr = np.array([1,2,3])
data1 = pd.Series(data=arr.copy())
print(data1)
arr[1] = 100
print(data1)
# 0 1
# 1 2
# 2 3
# dtype: int32
# 0 1
# 1 2
# 2 3
# dtype: int32
显示索引与隐式索引
上述的例子都为隐式索引,即不指定索引,自动生成的从0-len-1的数值索引为隐式索引,接下来进行显示索引的指定
import numpy as np
import pandas as pdarr = ['Jack','Male']
arr1 = ['Name','Gender']
data1 = pd.Series(data=arr,index=arr1)
print(data1)
# Name Jack
# Gender Male
# dtype: object
可以看到这里的dtype变为了object类型,原因为data的属性为字符串
选用dict创建Series对象
使用dict对象创建Series对象,只需要将data赋值为dict,索引会自动选用键,如果要自定义显式索引的话,则会根据显示索引匹配字典的键,如果有匹配不成功的则会使用pd.NA,也就是空值进行填充
不指定索引
import numpy as np
import pandas as pddict1 = {'Name':'Jack','Gender':'Male'}
data1 = pd.Series(data=dict1)
print(data1)
# Name Jack
# Gender Male
# dtype: object
指定索引
import numpy as np
import pandas as pddict1 = {'Name':'Jack','Gender':'Male'}
data1 = pd.Series(data=dict1,index=['Name','Hobby'])
print(data1)
# Name Jack
# Hobby NaN
# dtype: object
这里指定了一个在字典中的键不存在的索引Hobby,因为在字典中并不存在,所以这里显示的值为pd.NA
选用标量创建Series对象
若使用标量创建Series对象,则会默认生成一个长度为1的Series对象
import numpy as np
import pandas as pddata1 = pd.Series(data=1)
print(data1)
print(data1.shape)
# 0 1
# dtype: int64
# (1,)
使用标量创建的广播机制
如果想用标量进行广播,就要指定显式索引,这样就会根据显示索引的长度对标量进行广播
import numpy as np
import pandas as pddata1 = pd.Series(data=1, index=[1,2,3,4,5,6,7])
print(data1)
print(data1.shape)
# 1 1
# 2 1
# 3 1
# 4 1
# 5 1
# 6 1
# 7 1
# dtype: int64
# (7,)
Series属性
Series属性一般包括以下几个
name
name:Series对象的名字,可以在Series创建时指定,在将Series对象转为DataFrame二维表后,name将作为列名存在,行索引为Series对象的原索引
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30}data1 = pd.Series(data=data1,name='Jack')
data2 = pd.DataFrame(data=data1)
print(data2)# Jack
# Hobby Basketball
# Age 30
size
size:Series对象的元素个数,也就是Series对象的长度
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30}data1 = pd.Series(data=data1,name='Jack')print(data1.size)# 2
shape
shape:Series对象的形状
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30}data1 = pd.Series(data=data1,name='Jack')print(data1.shape)# (2,)
index
index:Series对象的索引列表,但不是纯粹的列表,是经过封装的,并且不支持修改元素,所以若需要修改index的值,则需要整体替换index
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30}data1 = pd.Series(data=data1,name='Jack')print(data1.index)
data2 = list(data1.index)
data2[0]='jjj'
data1.index = data2
print(data1)# Index(['Hobby', 'Age'], dtype='object')
# jjj Basketball
# Age 30
# Name: Jack, dtype: object
values
values:为Series对象的值列表,并且values是只读的,不像index可以进行修改,若想对值进行修改,可以使用索引取值,然后修改,详见下文
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30}data1 = pd.Series(data=data1,name='Jack')print(data1.values)
# ['Basketball' 30]
Series索引取值
Series对象[索引名]及Series对象.索引名
Series可以通过Series对象[索引名]进行取值,这里可以是索引名,也可以是索引列表
同样也可以通过Series对象.索引名来进行取值,但是要确保索引名和实例属性不冲突,否则会优先返回实例属性
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30,'name':'pig'}data1 = pd.Series(data=data1,name='Jack')
print(data1['Hobby'])
print(data1[['Hobby','Age']])
print(data1.Hobby)
print(data1.name)
# Basketball
# Hobby Basketball
# Age 30
# Name: Jack, dtype: object
# Basketball
# Jack
可以看到这里返回的name为Jack,也就是Series对象的名字,而不是pig,原因是属性名和index发生了冲突,所以会优先返回实例属性,这里想要取出索引name对应的值,只能使用data1['name']
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30,'name':'pig'}data1 = pd.Series(data=data1,name='Jack')
print(data1['name'])
# pig
Series对象.iloc[]
这里使用的iloc[]索引同样适用于DataFrame(后面会更新博客讲解,请保持关注),iloc[]索引的参数为从0-len-1的数值索引,比如这里要取第2个值就为iloc[1]
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30,'name':'pig'}data1 = pd.Series(data=data1,name='Jack')
print(data1.iloc[0],data1.iloc[1])
# Basketball 30
索引取值后修改
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30,'name':'pig'}data1 = pd.Series(data=data1,name='Jack')
print(data1.iloc[0],data1.iloc[1])
data1.iloc[0] = 'football'
print(data1)
# Basketball 30
# Hobby football
# Age 30
# name pig
# Name: Jack, dtype: object
import numpy as np
import pandas as pddata1 = {'Hobby':'Basketball','Age':30,'name':'pig'}data1 = pd.Series(data=data1,name='Jack')
data1['Hobby'] = 'football'
data1.Age = 18
print(data1)
# Hobby football
# Age 18
# name pig
# Name: Jack, dtype: object
Series数值运算
Series数值运算支持广播机制,及于numpy运算函数兼容
广播机制演示
import numpy as np
import pandas as pddata1 = pd.Series(data=np.random.randint(1,10,5))
print(data1)
print(data1+1)
# 0 3
# 1 9
# 2 9
# 3 2
# 4 8
# dtype: int32
# 0 4
# 1 10
# 2 10
# 3 3
# 4 9
# dtype: int32
使用Numpy运算函数
import numpy as np
import pandas as pddata1 = pd.Series(data=np.random.randint(1,10,5))
print(data1)
print(np.power(data1,2))
# 0 3
# 1 1
# 2 4
# 3 4
# 4 1
# dtype: int32
# 0 9
# 1 1
# 2 16
# 3 16
# 4 1
# dtype: int32
这里使用numpy中的power实现了一个乘方操作
相关文章:
Pandas Series对象创建,属性,索引及运算详解
目录 Series对象创建 实例化参数 index参数 选用array-like创建Series对象 list ndarray 显示索引与隐式索引 选用dict创建Series对象 不指定索引 指定索引 选用标量创建Series对象 使用标量创建的广播机制 Series属性 name size shape index values Series索…...
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
遗传算法(Genetic Algorithm, GA)是一种启发式搜索算法,用于寻找复杂优化问题的近似解。它模拟了自然选择和遗传学中的进化过程,主要用于解决那些传统算法难以处理的问题。 遗传算法的基本步骤: 初始化种群࿰…...
高等数学 2.3 高阶导数
一般地,函数 y f ( x ) y f(x) yf(x) 的导数 y ′ f ′ ( x ) y\ f\ (x) y ′f ′(x) 仍然是 x x x 的函数。我们把 y ′ f ′ ( x ) y\ f\ (x) y ′f ′(x) 的导数叫做函数 y f ( x ) y f(x) yf(x) 的二阶导数,记作 y ′ ′ y\ y ′…...

app抓包 chrome://inspect/#devices
一、前言: 1.首先不支持flutter框架,可支持ionic、taro 2.初次需要翻墙 3.app为debug包,非release 二、具体步骤 1.谷歌浏览器地址:chrome://inspect/#devices qq浏览器地址:qqbrowser://inspect/#devi…...
SAP自动化-ME12批量更新某行价格
Python源码 #-Begin-----------------------------------------------------------------#-Includes-------------------------------------------------------------- import sys, win32com.client import os#-Sub Main----------------------------------------------------…...
数据库系统 第58节 概述源码示例
深入探讨数据库技术,我们将通过具体的源代码示例来进一步解释数据库分区、复制、集群和镜像等高级特性。 数据库分区的源代码示例 哈希分区 在PostgreSQL中,可以使用哈希分区来创建一个分区表: CREATE TABLE measurements (city_id …...

软件设计师——程序设计语言
目录 低级语言和高级语言 编译程序和解释程序 正规式,词法分析的一个工具 有限自动机 编辑 上下文无关法 编辑 中后缀表示法 杂题 编辑 低级语言和高级语言 编译程序和解释程序 计算机只能理解由0、1序列构成的机器语言,因此高级程序设计…...

【在Linux世界中追寻伟大的One Piece】五种IO模型和阻塞IO
目录 1 -> 五种IO模型 1.1 -> 阻塞IO(Blocking IO) 1.2 -> 非阻塞IO(Non-blocking IO) 1.3 -> 信号驱动IO(Signal-Driven IO) 1.4 -> IO多路转接(IO Multiplexing) 1.5 -> 异步IO(Asynchronous IO) 2 -> 高级IO概念 2.1 -> 同步通信VS异步通信…...

nginx实现权重机制(nginx基础配置二)
在上一篇文章中我们已经完成了对轮询机制的测试,详情请看轮询机制。 接下来我们进行权重机制的测试 一、conf配置 upstream backServer{ server 127.0.0.1:8080 weight2; server 127.0.0.1:8081 weight1; } server { listen 80; server_name upstream.boyatop.cn…...

华为的仓颉和ArkTS这两门语言有什么区别
先贴下官网: ArkTs官网 仓颉官网 ArkTS的官网介绍说,ArkTS是TypeScript的进一步强化版本,简单来说就是包含了TS的风格,但是做了一些改进。 了解TypeScript的朋友都应该知道,其实TypeScript就是JavaScript的改进版本&…...
(SERIES10)DM逻辑备份还原
1 概念 逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻…...
Java零基础-StringBuilder类详解
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…...

免费爬虫软件“HyperlinkCollector超链采集器v0.1”
HyperlinkCollector超链采集器单机版v0.1 软件采用python的pyside2和selenium开发,暂时只支持window环境,抓取方式支持普通程序抓取和selenium模拟浏览器抓取。软件遵守robots协议。 首先下载后解压缩,然后运行app目录下的HyperlinkCollector.exe 运行…...
OPENAIGC开发者大赛企业组AI黑马奖 | AIGC数智传媒解决方案
在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给您…...

k8s(kubernetes)的PV / PVC / StorageClass(理论+实践)
NFS总是不支持PVC扩容 先来个一句话总结:PV、PVC是K8S用来做存储管理的资源对象,它们让存储资源的使用变得可控,从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则&…...

前端Excel热成像数据展示及插值算法
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏:《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️生活的理想,就是为了理想的生活! 目录 📘 前言 📘一、热成像数…...

VBA_NZ系列工具NZ01: VBA二维码应用技术
我的教程一共九套及VBA汉英手册一部,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到数据库,到字典,到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑,这么多知识点该如何组织…...

小明震惊OpenAI 的新模型 01
在硅谷的中心,繁忙的咖啡馆和创业中心周围,年轻的软件工程师小明坐在他的办公桌前,面露困惑。科技界一直在盛传一项新的AI突破,但他持怀疑态度,不敢抱太大希望。他认为AI泡沫即将破灭,炒作列车即将出轨&…...

Clickhouse使用笔记
clickhouse官方文档:https://clickhouse.com/docs/zh/sql-reference/data-types/decimal 一,建表 create table acitivity_user_record ( id String DEFAULT generateUUIDv4(), -- 主键自增 activityId String, userId String, userName Nullable(Strin…...

基于高通主板的ARM架构服务器
一、ARM架构服务器的崛起 (一)市场需求推动 消费市场寒冬,全球消费电子需求下行,服务器成半导体核心动力之一。Arm 加速布局服务器领域,如 9 月推出 Neoverse V2。长久以来,x86 架构主导服务器市场&#…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...