【数据分析 - 基础入门之pandas篇②】- pandas数据结构——Series

news2024/11/28 14:54:39

文章目录

  • 前言
  • 一、Series的创建
    • 1.1 列表创建
    • 1.2 NumPy数组创建
    • 1.3 字典创建
  • 二、Series索引
    • 2.1 显式索引
    • 2.2 隐式索引
  • 三、Series切片
    • 2.1 显式切片
    • 2.2 隐式切片
  • 四、Series基本属性和方法
    • 4.1 属性
    • 4.2 方法
    • 4.3 案例——使用 bool 值去除空值
  • 五、Series运算
  • 六、Series多层行索引
    • 6.1 Series多层索引的构建
    • 6.2 Series多层索引的索引和切片操作
  • 结语
  • 相关导读

前言

大家好!我是一朵向阳花(花花花),本期跟大家分享的知识是 pandas 数据结构——Series。

作者的【 Python 数据分析】专栏正在火热更新中,如果本文对您有帮助,欢迎大家点赞 + 评论 + 收藏 !

每日金句分享:愿你有一天,能和你最重要的人重逢。』—— 艾拉「可塑性记忆」

一、Series的创建

Series 是一种类似于一维数组的对象,由下面两部分组成:

  • values:一组数据,ndarray 类型
  • index:数据索引

顾名思义,我们在创建 Series 对象时,需要传递一组数据,该数据大多数时候是可迭代对象。因此,下面三种创建方式都是将数据传入到 Series 方法中。

1.1 列表创建

list1 = list('ABCD') # 创建列表
s =pd.Series(list1) # 传递列表数据到 Series 方法中
print(s)
print(type(s.values))
print(type(s.index))

1.2 NumPy数组创建

n = np.array(range(5,10))
s2 = pd.Series(n)
s2

1.3 字典创建

前两种方式,都是只传递了数据,那么索引是默认索引(0 ~ N-1);下面的字典创建方式,则是以字典的键为索引,字典的值为数据。

d = {
'a':11,'b':22,'c':33,'d':44
}
s = pd.Series(d)
s

二、Series索引

从以上 Series 的创建中我们可以看出,Series 的索引是可以修改的 。我们先来探讨以下索引的作用。

  • 获取元素

有多种获取方式,s.索引名,s[‘索引名’],s.loc[‘索引名’]

  • 允许修改

(为 s.index 重新赋值即可,注意前后数量一致)

显式即表示使用索引名称的方式,隐式即表示使用序号的方式。后面的显式切片和隐式切片也是同理。

2.1 显式索引

取单个值时,三种方式:(假设 Series 对象名为 s

  • s.索引名(数字索引不能用这种方式)
  • s[‘索引名’]
  • s.loc[‘索引名’]

取多个值时,返回一个新的 Series 对象,两种方式(也就是加中括号):

  • s.[[‘索引名1’,‘索引名2’]]
  • s.loc[[‘索引名1’,‘索引名2’]]
s = pd.Series(np.array(range(5,10)),index=list('abcde'),name='number')
print(s)
display(s.a,s['a'],s.loc['a'])

2.2 隐式索引

隐式索引和显示索引的区别就是它通过数字来获取值。因为是数字,因此 s.number 这种方式肯定 不能用了 ,其他都相同。

取单值,两种方式

  • s[number]
  • s.iloc[number]

取多值,两种方式

  • s[[number1,number2]]
  • s.iloc[[number1,number2]]
s = pd.Series(np.array(range(5,10)),index=list('abcde'),name='number')
print(s)
print('取单值')
print(s[1])
print(s.iloc[1])
print('取多值')
print(s[[1,2]])
print(s.iloc[[1,2]])

三、Series切片

切片操作是获取一个新的 Series 对象的操作,显式切片是为左闭右臂,隐式切片时为左闭右开

2.1 显式切片

两种方式:

  • s[索引名1:索引名2]
  • s.loc[索引名1:索引名2]

2.2 隐式切片

两种方式:

  • s[number1:number2]
  • s.iloc[number1:number2]
s = pd.Series({
'yw':100,
'math':150,
'eng':110,
'Python':130
})
print('数据:',end='')
print('-'*10)
print(s)
print('-'*10)
print('显式切片')
print(s['yw':'math'])
print('-'*10)
print(s.loc['yw':'math'])
print('-'*10)
print('隐式切片')
print(s[0:1])
print('-'*10)
print(s.iloc[0:1])

四、Series基本属性和方法

Series基本属性和方法是让我们更好了解数据组成的手段。

4.1 属性

属性作用
s.shape查看数据行列
s.ndim查看维度,Series 就是一维,ndim 恒等于1
s.size查看数据总数
s.index查看索引
s.values查看数据
s.name查看 Series 对象的 name,若未设定则为空

4.2 方法

方法功能
s.head()查看前5条数据,若传入数字 n ,则查看前 n 条
s.tail()查看后5条数据,若传入数字 n ,则查看后 n 条
s.isnull()判断数据是否为空,空的为 True ,不空的为 False
s.notnull()判断数据是否不空,空的为 False ,不空的为 True

4.3 案例——使用 bool 值去除空值

原理:Series 切片可以再传入一个 Series 对象,该 Series 对象索引要和原来相同,那么值为 False 的将不会被取出。

请看示例:

s = pd.Series(['a','e','f','b'])
s[pd.Series([True,True,False,True])]


如果改为:

s = pd.Series(['a','e','f','b'])
s[pd.Series([True,True,False,True],index=list('abcd'))]

那么将会报错:

下面是 Series 去除空值的案例。

s = pd.Series(['zhangsan','lisi','a',np.NAN,None])
print('数据:'+'-'*10)
print(s)
conditon = s.isnull()
print('判空情况:'+'-'*10)
print(conditon)
# 使用 bool 值索引过滤数据
s = s[~conditon]
print('过滤结果:'+'-'*10)
print(s)

五、Series运算

Series 运算包括算术运算和 Series 对象之间运算。算术运算是针对每一个元素的,有 +、-、*、/、 //、 %、 ** 等,这里不再赘述。Series 对象间的运算,只要记住,索引一个有一个没有时,计算值为 NaN,其他按照算术运算计算即可。

  • 算术运算
s = pd.Series(np.array(range(5,10)))
print(s)
s * 10

  • Series对象间的运算
s1 = pd.Series(np.array(range(5,10)))
s2 = pd.Series([3,6,10,12])
print(s1)
print(s2)
s1 + s2 # 索引一个有一个没有时,计算值为 NaN

六、Series多层行索引

6.1 Series多层索引的构建

Series 不仅支持单层索引,还支持多层索引。最简单的实现方式就是将 index 设置成多维。

下面以二级行索引为例:

s = pd.Series(np.random.randint(60,100,6),index=[['语文','语文','语文','数学','数学','数学'],['小明','小红','小丽','小明','小红','小丽']])
print(s)

在这里插入图片描述

6.2 Series多层索引的索引和切片操作

对于 Series 多层索引的索引和切片操作,只要记住以下两点:

  • 要先取第一层,再取第二层,不能直接取第二层索引
  • 获取到第一层之后,就是一个普通的单层索引 Series
  • 隐式索引,直接得到数

具体的方式,还是索引和切片都分为显式和隐式,下面通过一个案例来演示。

索引:

s = pd.Series(np.random.randint(60,100,6),index=[['语文','语文','语文','数学','数学','数学'],['小明','小红','小丽','小明','小红','小丽']])
print(s)
# 索引
print('显式索引:'+'-'*10)
print(s['语文']) # 获取到单层 Series
print(s.loc['语文']) 
print(s['语文']['小明'],s.loc['语文']['小明']) # 获取到单个值
print('隐式索引:'+'-'*10)
print(s.iloc[0])
print(s[0]) # 获取到单个值

切片:

s = pd.Series(np.random.randint(60,100,6),index=[['语文','语文','语文','数学','数学','数学'],['小明','小红','小丽','小明','小红','小丽']])
s = s.sort_index()
print(s)
print('显式切片'+'-'*10)
print(s['数学':'语文'])
print(s.loc['数学':'语文'])
print('隐式切片'+'-'*10)
print(s[0:2])
print(s.iloc[0:2])

结语

💕 本期跟大家分享的 “芝士” 就到此结束了,关于 Series 数据结构,你学会了吗?✨

🍻 我是向阳花花花花,在学习的路上一直前行,期待与你一起进步。~ 🍻

🔥如果文中有些地方不清楚的话,欢迎联系我,我会给大家提供思路及解答。🔥

相关导读

文章直达链接
上期回顾【数据分析 - 基础入门之pandas篇①】- pandas介绍
下期预告【数据分析 - 基础入门之pandas篇③】- pandas数据结构——DataFrame

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

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

相关文章

带你全面了解四大内存操作函数memset(),memcpy(),memmove(),memcmp()(附模拟实现)

内存操作函数 文章目录 内存操作函数memcpymemmovememcmpmemset 注:点击蓝色标题可以跳转到官方网站查看更权威的解析哦。 memcpy void * memcpy ( void * destination, const void * source, size_t num );函数memcpy从source的位置开始,向后复制num个…

Linux - CentOS 7 源码安装 MySQL 8.0.31

一、mysql-boost-8.0.31.tar.gz 源码下载 下载地址:https://dev.mysql.com 二、源码安装 MySQl 要求 cmake、Boost C库、ncurses库、OpenSSL库 //需要cmake3,gcc-5.3以上; 三、源码搭建 MySQL 环境 1、创建用户名和组 groupadd mysql …

ChatLaw团队招实习生啦!真格基金的创业、投资与AI详细指南;远程工作的8个安全法则;游戏开发者的数学教程 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 北大 ChatLaw 团队招聘实习生,开放算法和前后端岗位 ChatLaw 是一个开源的中文法律大模型,由北京大学与北大-兔…

vim编辑器中实现左边目录,右边内容布局的方法(vim插件:显示树形目录插件NERDTree安装和使用)

NERDTree:是Vim编辑器的文件系统资源管理器。使用此插件,用户可以直观地浏览复杂的目录层次结构,快速打开文件进行读取或编辑,并执行基本的文件系统操作。 它允许轻松浏览文件,并在不离开vim的情况下执行一些基本操作…

Spring Cloud的基本应用

上篇文章我们的eureka的集群已经搭建完毕,但是我们还没有开始使用,之前我们的page访问的方法是直接写死的,现在我们就可以改为集群的方式来写 Autowired//注册中心对应的客户端对象private DiscoveryClient discoveryClient;RequestMapping("query/{id}")public Prod…

基于51单片机的智能垃圾桶

功能: 本实例是基于51单片机为核心的智能垃圾桶仿真,主要由51单片机最小系统、L298N电机驱动电路、开盖电机、超声波传感器、红外测速模块、直流电机、红外人体传感器、LCD1602显示屏、震动传感器、按键电路构成。 1.系统的传感器主要用人体感应和机体震…

订单结算页+下单业务

一、订单结算页 1.业务分析 (1) 获取用户收货地址信息 一般的收货地址都是多个,使用时选中一个,所以收货地址使用List集合封装 (2)获取购物车商品信息 购物车商品也是多个,使用List集合封装 (3)查询商品库存 查询每个商品是否有库存&#…

VSCode安装及环境配置详细教程(windows版本)

目录 安装VSCode 安装Python 检查环境变量 检查Python是否能运行 VSCode环境配置 切换成简体中文 添加Python插件 编写代码运行 !!请先在官网下载Python和VSCode安装包,保存至本地 Python官网:https://www.python.org/do…

多元回归预测 | Matlab基于灰狼算法(GWO)优化高斯过程回归(GWO-GPR)的数据回归预测,matlab代码,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于灰狼算法(GWO)优化高斯过程回归(GWO-GPR)的数据回归预测,matlab代码,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源…

APP测试要点有哪些?

我们日常购物、旅游、支付等活动都离不开手机,由此衍生了很多APP。 比如每天使用频率非常高的微信、支付宝、微博、抖音、王者荣耀等等。 APP测试主要进行功能测试、性能测试、自动化测试、安全性测试、兼容性测试、专项测试。 01、APP测试流程 APP测试流程与web测…

软考A计划-系统集成项目管理工程师-项目进度管理-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

python glob库glob函数返回为空时

这里的max函数会报空序列的错误,原因就是glob.glob函数读取不到文件的问题,推测是脚本所在文件夹与传入的文件夹地址不对造成的,比如C:/tor/data/jiaoben.py,而文件所在文件夹是C:/tor/biaobei/

自媒体13条监管新规来了:做自媒体还有前途吗?

我是卢松松,点点上面的头像,欢迎关注我哦! 各位自媒体人,大家一定要逐条逐句,认真研读,领会精神,掌握要求,规范运营好自己的账号,切莫越界踩线,多为广大网友…

邮箱推荐和(警告)使用qq邮箱的坏处

qq如果发布违规消息,比如群聊无意发布会导致你账号封号,而且随着次数增多,会导致永久封号,你的qq音乐,qq浏览器,qq游戏,{qq邮箱},全部会无法登录,比如需要登陆邮箱验证码…

初学者也能轻松掌握的MQL4编程入门指南

MQL4编程是外汇交易中极为重要的一部分,掌握MQL4编程可以帮助交易者快速创建自己的交易算法,进而提高交易效率和盈利水平。但是对于初学者来说,MQL4编程可能会显得有些困难。本篇文章就是为初学者准备的,针对MQL4编程进行入门指导…

对RAM和ROM的理解

什么是RAM、ROM? RAM(Random Access Memory)随机存取存储器 ROM(Read Only Memory)只读存储器 先记住一件事 RAM断电将失去数据 ROM断电仍会保留数据 RAM、ROM、Flash、内存条、硬盘、SD卡到底怎么归类? 我们先来看下计算机的原理和计算机的需求 …

【Leetcode】59. 螺旋矩阵II

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 面试频率较高 1. 先定义一个空矩阵 2. startx表示行起始 starty表示列起始 3. 左闭右开…

信息安全-加密技术

一、概念 加密是利用数学方法将明文(plain text)转换为密文(cipher),从而达到保护数据的目的。 加密是一个使信息只对正确的接收者可读,其他用户看到的是乱码信息的过程。 加密技术作用 加密技术在网络上的作用就是防止私有化信息在网络上被拦截和窃取。通过加密可保…

性能测试:Jmeter-Beanshell请求加密实例

前言 进行性能测试时,有可能遇到一种场景:接口请求由于安全问题,需要进行加密发送。 这种场景下,使用Jmeter实现性能测试,则也需要使用同样的加密规则发送请求报文。 要实现此类性能测试有几种策略: 直…

纹理环绕方式

一般而言,纹理坐标范围(0,0)到(1,1),若设置超出该范围,则会按照如下环绕方式处理。 设置纹理参数的函数原型为: 坐标信息: float vertices[] { // positions // colors // texture coords 0.9f, 0.9f, 0.0f, 1.0f,…