Python的Pandas--Series的创建和实现

embedded/2024/12/28 12:56:36/

1.Series函数的格式:

pandas.Series(data,index,dtype,name,copy)

data:一组数据(ndarray类型、list、dict等类)或标量值

index:数据索引标签。如果不指定,默认为整数,从0开始

dtype:数据类型,默认会自己判断

name:设置的名称

copy:拷贝数据,默认为False

# 创建Series对象
import pandas as pd
import numpy as np
pd1 = pd.Series([100,200,300,400])
pd2 = pd.Series((100,200,300,400))
pd3 = pd.Series(np.array((100,200,300,400)))
print("pd1:")
print(pd1)
print("pd1的数据类型是:",type(pd1))
print("pd2:")
print(pd2)
print("pd2的数据类型是:",type(pd1))
print("pd3:")
print(pd3)
print("pd3的数据类型是:",type(pd1))

pd1从列表生成

pd2从元组生成

pd3从Numpy的数组生成

在Series函数中,五个参数中必须有data(一组数据)参数,不写index默认为整数,从0开始,dtype默认会自己判断可写可不写,name设置的名称可省略,copy拷贝的数据 默认为False

注意:Series中的索引值可以是重复的

# Series对象的索引
import pandas as pd
import numpy as np
value = ["name","sex","score","class"]
print("--------ds1--------")
ds1 = pd.Series(value)
print(ds1)
print("--------ds2--------")
ds2 = pd.Series(value,[10,20,30,40])
print(ds2)
print("--------ds3--------")
index = ["name","sex","score","class"]
ds3 = pd.Series(value,index)
print(ds3)
print("--------ds4--------")
ds4 = pd.Series({'a':10,'b':20,'c':30,'d':40})
print(ds4)
print("--------ds5--------")
ds5 = pd.Series(5,index = [0,1,2,3])
print(ds5)

ds1是默认索引

ds2是显性整数索引

ds3是显性命名索引

ds4通过字典类型创建,键就是索引的名字

ds5通过标量创建,此时必须给出索引,通过索引确定大小

2.Series的values和indexs的属性

Series是由一组数据values和索引index组成,因此Series对象最重要的两个对象是数据values和索引index。可查看访问这两个对象,可对index对象重新赋值以重新建立索引,但是不能对values重新赋值

# Series对象的values和index
import pandas as pd
import numpy as np
value = ["zs","male",80,"class1"]
index = ['name','sex','score','class']
ds = pd.Series(value,index)
print("Series对象的values和index的属性访问")
print("ds的values:",ds.values)
print("ds的index:",ds.index)
print("Series对象的values和index的重新赋值")
ds.index = ['姓名','性别','成绩','年龄']
print(ds)

3.Series对象的索引

Series是由一组数据values和索引index组成,通过index可以访问对象的value

Series非常像ndarray,意味着可以采用NumPy中的一维数组操作类似的索引操作:单值元素索引和切片。如果显式给出了索引名称,也可以像字典那样通过“键”来访问对应的值

默认索引:只能通过默认整数下标访问和切片(不能是负值索引)

显式名称索引:既可以通过默认整数下标访问和切片(可以像列表那样使用负值索引),也可以通过“键”名称访问和切片

显式整数索引:只能通过指定整数下标访问元素,通过隐式整数索引(不能是负值索引)进行切片

# Series对象的索引
import pandas as pd
import numpy as np
x = pd.Series([10,20,30,40])
# 默认索引下标索引
y = pd.Series([10,20,30,40],index = ['a','b','c','d'])
# 显式名称索引下标索引
z = pd.Series([10,20,30,40],index = [100,200,300,400])
# 显式整数索引下标索引
print("x[1]=",x[1])
print("x[0:2]=",x[0:2])
print("y['b']=",y['b'])
print("y['a':'c'] =",y['a':'c'])
print("z[200]=",z[200])
print("z[0:2]=",z[0:2])

4.Series的运算和操作

NumPy中的数组运算,在Series中都保留了,都可以使用,并且Series进行数组运算的时候,索引与值之间的映射关系不会发生改变。也就是说,在操作Series的时候,基本上可以吧Series看成NumPy中的ndarray数组来进行操作。ndarray数组的绝大多数操作都可以在Series上应用

import pandas as pd
import numpy as np
x = pd.Series([10,20,5,13]) 
#默认整数下标索引
m = x>20
n = x[x>10]
p = x*10
q = np.max(x)
print("x>20:",m)
print("x[x>10]:",n)
print("x*10:",p)
print("np.max(x):",q)

Series和ndarray之间的主要区别是,Series上的操作会根据索引自动对齐数据。因此,可以不考虑所涉及的Series的数据对齐


http://www.ppmy.cn/embedded/149443.html

相关文章

开放世界目标检测 Grounding DINO

开放世界目标检测 Grounding DINO flyfish Grounding DINO 是一种开创性的开放集对象检测器,它通过结合基于Transformer的检测器DINO与基于文本描述的预训练技术,实现了可以根据人类输入(如类别名称或指代表达)检测任意对象的功…

关于机器学习当中的决策树算法解析

一、决策树简介 1. 什么是决策树? 决策树是一种基于树结构的机器学习算法,用于解决分类和回归问题。在决策树中,每个节点表示一个特征,每个边代表一个决策规则,最终的叶节点代表输出。一句话进行概括就是就是通过一系…

OpenResty开发环境搭建

简介 OpenResty 是一个基于 Nginx的高性能 Web 平台,用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。官方地址:http://openresty.org/cn/ 具备下列特点: 具备Nginx的完整功能基于Lua语言进行扩展&#…

小程序将对象通过url传递到下个页面

// 假设有一个对象需要传递 const obj { name: 张三, age: 25 };// 将对象转换为 JSON 字符串并编码 const objStr encodeURIComponent(JSON.stringify(obj));// 使用 wx.navigateTo 跳转并传递参数 wx.navigateTo({url: /pages/targetPage/targetPage?data${objStr}, });注…

ChatGPT与Postman协作完成接口测试(三)

如果想要完善接口测试用例,可以依据笔者前面使用的方法,让ChatGPT继续完善测试用例,如关键字过长、特殊字符等接口测试用例。限于篇幅,这里不考虑这些内容。S_PM_WebTours.json文件就是最终的Postman接口测试用例脚本。 接下来笔者…

【jdk】summary

JDK的定义与组成 JDK(Java Development Kit)是Java开发工具包的缩写,它是用于开发Java应用程序的一套完整的软件开发工具。JDK是Java技术的核心部分,包括了Java运行环境(JRE)、Java工具(如java…

Rectified Flow 原理简介与示例代码解读

Rectified Flow 原理简介与示例代码解读 Rectified Flow 是最近非常火热的图像生成模型框架,最新的 SD3、Flux 等模型都是基于该框架。本文对其原理进行简单直观地介绍,并通过分析官方示例代码来加深理解。 论文原作者的中文解读:[ICLR2023…

智能合约在Web3中的作用:去中心化应用的基石

Web3,作为互联网的下一代技术架构,正以其独特的分布式方式重塑我们日常的在线互动。在这一变革的核心,智能合约无疑是最为重要的技术之一。作为一种自动化的协议,它不仅改变了传统业务和服务的执行方式,更为去中心化应…