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 架构主导服务器市场&#…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
