Series(四):Series的底层就是ndarray数组,讲述一下它们在运算时的异同。

简介: Series(四):Series的底层就是ndarray数组,讲述一下它们在运算时的异同。

1、说明

 由于pandas的底层是集成了numpy,因此Series的底层数据就是使用ndarray来构建的,因此我们得到了一个Series后,就可以使用numpy中的函数,直接操作Series。但是Series与ndarry不同的地方在于,Series中多了一个索引。

 这些问题都是细节问题,只有熟悉了这些细节知识,对于我们熟练使用numpy和pandas都是有很大帮助的。Series的底层数据就是由ndarray来构建的,而DataFrame又是由一个个的Series堆积而成的,随意取出DataFrame每一行或者每一列数据,都是一个Series。


2、运算时的相同点

① 直接使用numpy中的函数操作Series

import numpy as np
import pandas as pd
s = pd.Series([1,2,3,4])
display(s)
display(np.sum(s))
display(np.mean(s))


结果如下:

image.png


② 使用Series得到ndarray后,再使用numpy中的函数操作Series

s = pd.Series([1,2,3,4])
display(s.values)
display(type(s.values))
display(np.sum(s))
display(np.mean(s))


结果如下:

image.png


3、运算时的不同点

① 对于不同的ndarray,直接是对应元素相加

x = np.array([1,2,3,4])
display(x)
y = np.array([1,2,3,4])
display(y)
display(x+y)


结果如下:

image.png


② 对于不同的Series,在运算时按照索引进行匹配运算

x = pd.Series([1,2,3,4],index=["a","b","c","d"])
display(x)
y = pd.Series([1,2,3,4],index=["b","c","d","e"])
display(y)
display(x+y)


结果如下:

image.png

注意:索引匹配上的数据,元素对应相加。索引没有匹配上的数据,返回NaN值。


③ 对于索引无法匹配的情况,可以使用默认值代替

x = pd.Series([1,2,3,4],index=["a","b","c","d"])
display(x)
y = pd.Series([1,2,3,4],index=["b","c","d","e"])
display(y)
display(x+y)
display(x.add(y,fill_value=100))


结果如下:

image.png

说明:对于x有索引a,但是y没有索引a,因此使用的默认值后,相当于给y添加了一个a索引,值为100,然后就是1+100=101。对于x没有有索引e,但是y有索引e,因此使用的默认值后,相当于给x添加了一个e索引,值为100,然后就是4+100=104。


假如你非要将索引不同的Series,进行对应位置元素相加,那么只能是重置索引。也就是说,将两个索引不同的Series换上相同的索引,再进行对应元素相加。


4、ndarry和Series数据中,如果存在NaN值,计算会出现什么情况?

x = np.array([1,2,3,np.NaN])
display(x)
display(np.mean(x))
y = pd.Series([1,2,3,np.NaN])
display(y)
display(np.mean(y))


结果如下:

image.png

结果说明:从上图结果可以看出,ndarry不会自动忽略nan值计算,而Series会自动忽略掉nan值进行计算。这是由于不同Series元素之间进行元素运算,是按照索引进行匹配相加的,这样就会导致很多nan值的出现,因此Series在numpy基础上做了部分改进,即可以直接忽略nan值运算。


相关文章
|
7月前
|
存储 分布式计算 安全
数据生命周期管理:从生成到销毁,数据的“生死”之旅
数据生命周期管理:从生成到销毁,数据的“生死”之旅
1308 6
|
缓存 运维 Linux
保姆级python项目离线部署服务器教程只需这一篇就够了(建议收藏)
这篇文章提供了详尽的Python项目在离线Linux(CentOS)服务器上的部署教程。作者首先介绍了环境背景,强调了无网络环境和使用有网络的CentOS虚拟机准备安装包的重要性。教程分为两部分:外网环境搭建和内网离线安装。在外网环境中,包括下载Python 3.9.0安装包、传输至服务器、安装依赖包,并使用pip3下载项目所需依赖。内网安装则涉及依赖包的复制和Python环境的同样步骤。最后,作者分享了运行项目的命令,并总结了离线安装的整个流程,提醒读者注意可能出现的问题。
保姆级python项目离线部署服务器教程只需这一篇就够了(建议收藏)
|
2天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。
|
8天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
7天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
7天前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
|
8天前
|
编解码 自然语言处理 文字识别
Qwen3-VL再添丁!4B/8B Dense模型开源,更轻量,仍强大
凌晨,Qwen3-VL系列再添新成员——Dense架构的Qwen3-VL-8B、Qwen3-VL-4B 模型,本地部署友好,并完整保留了Qwen3-VL的全部表现,评测指标表现优秀。
624 7
Qwen3-VL再添丁!4B/8B Dense模型开源,更轻量,仍强大
|
10天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
750 2