Pandas Series对象创建,属性,索引及运算详解

news2024/9/18 12:29:21

目录

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 pd

data1 = 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 pd


arr = 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 pd


arr = 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 pd


arr = ['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 pd


dict1 = {'Name':'Jack','Gender':'Male'}
data1 = pd.Series(data=dict1)
print(data1)
# Name      Jack
# Gender    Male
# dtype: object
指定索引
import numpy as np
import pandas as pd


dict1 = {'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 pd

data1 = pd.Series(data=1)
print(data1)
print(data1.shape)
# 0    1
# dtype: int64
# (1,)
使用标量创建的广播机制

如果想用标量进行广播,就要指定显式索引,这样就会根据显示索引的长度对标量进行广播

import numpy as np
import pandas as pd

data1 = 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 pd

data1 = {'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 pd

data1 = {'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 pd

data1 = {'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 pd

data1 = {'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 pd

data1 = {'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 pd

data1 = {'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 pd

data1 = {'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 pd

data1 = {'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 pd

data1 = {'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 pd

data1 = {'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 pd

data1 = 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 pd

data1 = 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实现了一个乘方操作

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生监控】Prometheus之PushGateway

Prometheus之PushGateway 文章目录 Prometheus之PushGateway介绍作用资源列表基础环境一、部署PushGateway1.1、下载软件包1.2、解压软件包1.3、编辑配置systemctl启动文件1.4、创建日志目录1.5、加载并启动1.6、监控端口1.7、访问PushGateway 二、 配置Prometheus抓取PushGate…

超声波测距

基本原理:超声波测距是通过发射超声波到物体表面再反射回来,通过测量声波传播的时间来计算距离的方法。 公式解释: ( L C \times T ) ( L ):距离(从发射头到接收头的总距离)( C ):声波的传播速…

汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用

背景 近日,有网友咨询汉王手写签批控件是否可以通过allWebPlugin中间件技术加载到谷歌、火狐、Edge等浏览器?为此,笔者详细了解了一下汉王手写签批控件,它是一个标准的ActiveX控件,曾经主要在IE浏览器使用,…

Spring为什么要用三级缓存解决循环依赖?

Spring为什么要用三级缓存解决循环依赖? 1. Spring是如何创建一个bean对象2. Spring三级缓存2.1 一级缓存:单例池,经历过完整bean生命,单例Bean对象2.2 二级缓存:提前暴露的Bean2.3 三级缓存:打破循环 3. S…

【CMake】使用CMake在Visual Studio 构建多cpp文件项目

首先,我们在 C m a k e Cmake Cmake文件下写入以下代码: #需求的最低cmake程序版本 cmake_minimum_required(VERSION 3.12)#本工程的名字 project(OpenGL)#支持的C版本 set(CMAKE_CXX_STANDARD 20)#本工程主程序文件及输出程序名称,生成exe …

TriangleIcon 鸿蒙ArkTS自定义View 实现带颜色的上下箭头

TriangleIcon 鸿蒙ArkTS自定义View 实现带颜色的上下箭头 最近将公司项目中VUE实现的的一个数据看板模块进行了纯血鸿蒙的实现,里面有个效果就是 数据指标上升 一个绿色箭头朝上,数据指标下降一个红色箭头向下 具体的效果可以查看上图, 其中V…

Vue3 项目实战甄选硅谷

1.技术选型 2.搭建Vue3 项目使用pnpm 1.安装pnpm pnpm安装 npm i -g pnpm 2.项目初始化 pnpm create vite cd ./project pnpm i pnpm run dev 初始化完成 3.项目开始之前先对项目进行一些配置 1.想让刚启动项目浏览器自动打开 找到 2.eslint配置 1.安装eslint pnpm…

FloodFill(洪水灌溉)算法专题——DFS深搜篇

1、图像渲染 . - 力扣(LeetCode) 1.1 算法原理 从(sr,sc)位置开始上下左右暴搜,将区域中符合条件的值修改为color。细节问题:当 color image[sr][sc]时,不需修改,直接返回即可。 1.2 算法代码 class Sol…

C++初阶:STL详解(三)——vector的介绍和使用

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C:由浅入深篇 小新的主页:编程版小新-CSDN博客 前言: 前面我们刚刚了解了strin…

STM32外设之LTDC/DMA2D—液晶显示(野火)

文章目录 显示屏有几种?基本参数控制?显存 LTDC 液晶控制器LTDC 结构框图LTDC 初始化结构体 LTDC_InitTypeDefLTDC 层级初始化结构体 DMA2D 图形加速器DMA2D 初始化结构体 要了解什么 屏幕是什么,有几种屏,有什么组成。 怎么控制,不同屏幕控…

FastGPT一站式解决方案[2-应用篇]:轻松实现RAG-智能问答系统,AI工作流、核心模块讲解

FastGPT一站式解决方案[2-应用篇]:轻松实现RAG-智能问答系统,AI工作流、核心模块讲解 1.FastGPT快速使用:基本设置、核心模块讲解 1.1 知识库设置 首先我们需要创建一个知识库。 知识库创建完之后我们需要上传一点内容。 上传内容这里有四种模式: 手动输入:手动输入问…

php部署到apach服务器上遇到的问题

php部署到apach服务器上遇到的问题 问题描述解决方案 问题描述 参考环境搭建文章: 链接: Windows本地搭建PHP环境 第六步的第二条中出现无法正常访问http://localhost:8888/index.php的情况。 解决方案 思路:之前的http://localhost:8888是可以正常访…

收购芯片设计公司Annapurna Labs后

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Linux-mysql5.7-mysql8.0安装包下载及安装教程,二合一

一、安装包下载 1、手动下载 MySQL :: Download MySQL Community Server 2、wegt下载 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 登录自己的liunx ,复制上面的命令下载。 二、手动安装 1、上传压缩包到…

Tomcat端口号被占用

1.当启动了Tomcat后再打开idea运行web项目下的Tomcat就会报这个“Tomcat端口号被占用”错误,解决办法就是关闭Tomcat(用tomcat文件里面的shutdown.bat关闭,也可以在exe程序里面关闭),再在idea中运行web项目下的Tomca …

华为OD机试真题-九宫格按键输入-2024年OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷D卷C卷)_华为od机试题库-CSDN博客 题目描述 九宫格按键输入,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连…

在typescript浏览器端中调用C++编写的函数,WebAssembly传递指针类型的参数,以及处理指针类型的返回值。

首先要在Cmake工程中的cmakelists.txt文件中引入Emscripten工具链&#xff1a; set(CMAKE_TOOLCHAIN_FILE "D:/CppPkg/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake")直接看C代码&#xff1a; #include <emscripten/emscripten.h> #i…

服务器——装新的CUDA版本的方法

服务器——装新的CUDA版本 一、进入 CUDA 版本列表二、根据自己服务器&#xff0c;选择对应的版本和配置三、使用管理员用户&#xff0c;运行下载和安装命令四、查看显卡驱动是否安装4.1 若安装了显卡驱动4.2 若显卡驱动没安装 参考文章 一、进入 CUDA 版本列表 CUDA Toolkit …

MFC工控项目实例之十七添加手动测试界面

承接专栏《MFC工控项目实例之十六输入信号验证》 1、在JogTest.h文件中添加代码 class CJogTest : public CDialog { public:CJogTest(CWnd* pParent NULL); // standard constructorCButtonST m_btnStart[16];CFont m_font; ... } 2、在JogTest.cpp文件中添加代码 #…

【医药行业】实施SAP有哪些医药行业GXP的合规要求和注意事项

作为实施过辉瑞和赛诺菲医药行业的项目&#xff0c;总结了如下&#xff1a; 在医药行业中&#xff0c;GxP&#xff08;Good Practices&#xff0c;良好规范&#xff09;是一系列标准与指南&#xff0c;旨在确保制药、医疗设备和生物制品的质量与合规性。GxP包括多个领域&#x…