【python】pandas库

news2024/11/19 11:19:48

文章目录

  • 简单介绍
  • Series数据结构
  • DataFrame数据结构
  • 索引对象
  • 基本功能
    • reindex重新索引
    • drop丢弃指定轴上的项
    • 索引、选取和过滤
    • 用loc和iloc进行选取
    • 算法运行数据对齐
    • DataFrame和Series之间的运算
    • 函数应用和映射
    • 排名和排序


简单介绍

pandas是python进行数据分析中非常重要的一个库,它主要有两种数据结构SeriesDataFrame,先从了解pandas中的两种数据结构及用法开始,后面再进行高级操作学习。


Series数据结构

Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series:
在这里插入图片描述
可以理解为:Series索引index+值value组成

这里是没有指定索引,默认是会自动创建一个0到N-1(N为数据的长度)的整数型索引。

你可以通过Series 的values和index属性获取其数组表示形式和索引对象:
在这里插入图片描述自己创建对应的索引(只需要指定index属性即可,与值一一对应):
在这里插入图片描述如何去取值?通过索引变量名[索引]或者变量名[[索引列表]]来取单个或者多个值:
在这里插入图片描述

可以看到取单个时返回的是一个标量,多个是Series数据类型。

还有一些类似numpy运算,对数据进行过滤:
在这里插入图片描述
将Series看成是一个定长的有序字典,是索引值到数据值的一个映射。它可以用在许多原本需要字典参数的函数中:
(1)判断某个索引是否存在:in
在这里插入图片描述(2)还可以通过python字典来创建Series数据结构,键值key–索引indexvalue值–value值
在这里插入图片描述

我不需要字典里面的全部数据,而且希望按一定顺序。只需要指定index属性,按照你想要的顺序和数据给定index,程序会把你指定的索引与字典进行一一配对,没找到的赋予NaN

在这里插入图片描述NaNNot a Number可以通过isnull或者notnull方法来查看数据中是否存在NaN值:
在这里插入图片描述

两个Series数据结构进行操作时,索引标签会自动对齐数据:

在这里插入图片描述
Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切,可以先了解一下:
在这里插入图片描述
Series的索引可以通过赋值的方式就地修改:
在这里插入图片描述


DataFrame数据结构

  • DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。
  • DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。
  • DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。

可以直接传入一个由等长列表或NumPy数组组成的字典来创建DataFrame
在这里插入图片描述行索引+列索引的二维数据
对于数据量较多的,可以调用head方法只显示前5行:
在这里插入图片描述传入字典创建DataFrame的列索引是随机的,可以在创建时指定columns属性来创建需要的顺序列索引:
在这里插入图片描述如果传入的列在数据中找不到,就会在结果中产生缺失值,同上也可以指定index行索引:
在这里插入图片描述DataFrame的每一列可以看成一个Series,name列名,索引行索引,可以通过DataFrame[列索引名]来得到一个Series:
在这里插入图片描述
默认取得一列,取一行的数据可以通过loc属性来取,后面将详细介绍这个属性:
在这里插入图片描述

其他一些增删改的操作:

可以直接对一列进行赋值:
(1)单个标量,会广播到这一列全部
在这里插入图片描述(2)将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。
在这里插入图片描述(3)如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值:
在这里插入图片描述(4)为不存在的列赋值会创建出一个新列:
在这里插入图片描述
删除用del关键字

在这里插入图片描述

嵌套字典传给DataFrame,pandas就会被解释为:外层字典的键作为列,内层键则作为行索引:

在这里插入图片描述
可以使用类似NumPy数组的方法,对DataFrame进行转置(交换行和列):
在这里插入图片描述也可以指定index属性来改变顺序:
在这里插入图片描述由Series组成的字典差不多也是一样的用法:
在这里插入图片描述
DataFrame构造函数所能接受的各种数据:
在这里插入图片描述
和Series一样,DataFrame也有name属性,行和列都有:
在这里插入图片描述跟Series一样,values属性也会以二维ndarray的形式返回DataFrame中的数据:
在这里插入图片描述


索引对象

pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index:
在这里插入图片描述Index对象是不可变的,因此用户不能对其进行修改:

index[1] = 'd'  # TypeError

不可变可以使Index对象在多个数据结构之间安全共享:
在这里插入图片描述每个索引都有一些方法和属性,它们可用于设置逻辑并回答有关该索引所包含的数据的常见问题。
在这里插入图片描述


基本功能

reindex重新索引

顾名思义,就是对索引进行重排或者其他操作。

  1. 重排序索引Series:(某个索引值当前不存在,就引入缺失值)
    在这里插入图片描述
  2. 对于一些比较乱的整数索引需要填充补齐,指定方法中method,使用ffill可以实现前向值填充 :
    在这里插入图片描述
  3. reindex可以修改索引,默认是行索引:(DataFrame)

在这里插入图片描述修改列索引指定columns即可:
在这里插入图片描述

  1. reindex函数的各参数及说明:

在这里插入图片描述

drop丢弃指定轴上的项

丢弃某条轴上的一个或多个项很简单,只要有一个索引数组或列表即可。

由于需要执行一些数据整理和集合逻辑,所以drop方法返回的是一个在指定轴上删除了指定值的新对象:【也就是原对象并不会删除】

  1. Series
    在这里插入图片描述在这里插入图片描述指定inplace=True,它会删除原有对象的数据
    在这里插入图片描述

  2. DataFrame

在这里插入图片描述默认axis=0就是删除行:
在这里插入图片描述
通过传递axis=1axis=’columns’可以删除列的值:
在这里插入图片描述

索引、选取和过滤

  1. Series

Series索引(obj[...])的工作方式类似于NumPy数组的索引,只不过Series的索引值不只是整数。

在这里插入图片描述利用标签的切片运算与普通的Python切片运算不同,其末端是包含的:
在这里插入图片描述用切片可以对Series的相应部分进行设置:
在这里插入图片描述

  1. DataFrame

在这里插入图片描述

用一个值或序列对DataFrame进行索引其实就是获取一个或多个列:

在这里插入图片描述
首先通过切片或布尔型数组选取数据:(筛选的是行)
在这里插入图片描述向[ ]传递单一的元素或列表,就可选择列。

通过布尔型DataFrame进行索引:(这个不分行和列)
在这里插入图片描述

用loc和iloc进行选取

对于DataFrame的行的标签索引,我引入了特殊的标签运算符loc和iloc。它们可以让你用类似NumPy的标记,使用轴标签(loc)或整数索引(iloc),从DataFrame选择行和列的子集。

行索引 loc:轴标签 iloc:整数索引

  1. DataFrame实例.loc[行索引名, 列索引名]
    在这里插入图片描述

  2. DataFrame实例.iloc[行索引下标, 列索引下标]
    在这里插入图片描述
    在这里插入图片描述
    这两个索引函数也适用于一个标签或多个标签的切片:

在这里插入图片描述
对于DataFrame,补充:
在这里插入图片描述

算法运行数据对齐

把两个DataFrame相加后将会返回一个新的DataFrame,其索引和列为原来那两个DataFrame的并集:没有共用的列或行标签,结果都会是空,共用的会执行相关操作,例如相加
在这里插入图片描述
如何对这些没有共用的进行填充,不显示NaN:
在这里插入图片描述使用df1的add方法,传入df2以及一个fill_value参数,可以解决NaN的问题:

在这里插入图片描述
补充其他减法乘法除法运算:
在这里插入图片描述
加个r是逆置的意思,A.sub(B)正常时A-B加个r后是B-A,其他类似。
在这里插入图片描述

DataFrame和Series之间的运算

numpy中二维-一维的例子,这个类似:
在这里插入图片描述DataFrame-Series:
在这里插入图片描述在这里插入图片描述默认情况下,DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播。
DataFrame的列索引与Series的索引 一一对应进行相关操作
如果某个索引值在DataFrame的列或Series的索引中找不到,则参与运算的两个对象就会被重新索引以形成并集:
在这里插入图片描述
默认都是与DataFrame的列索引进行匹配,如果要改成行匹配需要进行下面操作:
传入axis='index'或axis=0
在这里插入图片描述

函数应用和映射

NumPy的ufuncs(元素级数组方法)也可用于操作pandas对象:
在这里插入图片描述另一个常见的操作是,将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法即可实现此功能:
apply方法默认是在各行之间进行操作,保留列索引,指定axis=1后就在各列中进行操作,保留行索引。
在这里插入图片描述
在这里插入图片描述
传递到apply的函数不是必须返回一个标量,还可以返回由多个值组成的Series:

在这里插入图片描述元素级的Python函数也是可以用的。假如你想得到frame中各个浮点值的格式化字符串,使用map方法即可:
在这里插入图片描述

排名和排序

根据条件对数据集排序(sorting)也是一种重要的内置运算。要对行或列索引进行排序(按字典顺序),可使用sort_index方法,它将返回一个已排序的新对象:

索引排序:sort_index方法

  1. Series 索引排序

在这里插入图片描述
2. DataFrame索引排序

在这里插入图片描述在这里插入图片描述

值排序:sort_values方法

  1. Series

在这里插入图片描述
在排序时,任何缺失值默认都会被放到Series的末尾:
在这里插入图片描述

  1. DataFrame

当排序一个DataFrame时,你可能希望根据一个或多个列中的值进行排序。将一个或多个列的名字传递给sort_values的by选项即可达到该目的:
在这里插入图片描述在这里插入图片描述

排名会从1开始一直到数组中有效数据的数量。接下来介绍Series和DataFrame的rank方法。默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的:

  1. Series

在这里插入图片描述

也可以根据值在原数据中出现的顺序给出排名:
在这里插入图片描述
这里,条目0和2没有使用平均排名6.5,它们被设成了6和7,因为数据中标签0位于标签2的前面。

你也可以按降序进行排名:
在这里插入图片描述

  1. DataFrame

在这里插入图片描述
在这里插入图片描述


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

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

相关文章

linux MySQL高阶语句

linux MySQL高阶语句 1、MySQL高级语言1.1order by排序1.2group by分组1.3limit前几行1.4as别名1.5通配符1.6子查询1.7in1.8not in1.9exists 2、视图2.1视图概念2.2功能2.3应用场景2.4视图和表的区别和联系2.5创建视图 3、null值3.1null值3.2null值与空值的区别3.3验证null和空…

MYSQL的CRUD语句(含c++代码)

一.MySQl表的创建与删除 创建语句与删除语句 注意: 主键的数据类型,不可以是变长度类型需要()限制长度,表名字需要使用符号来包围。 二.MySQl数据插入 三.MySQl数据删除 四.MySQl数据更新 使用语句 SET SQL_SAFE_UPDATES 0; show variabl…

Makefile核心(第一节)

文章目录 前言Makefile核心举例讲解结束 前言 曾以为学习过程是痛苦的,其实真正静下心来是美好的,虽然很枯燥,但生活就是这样,不学习还能干吗呢…… ——张顺 makefile是相当重要的,只要你要写大工程,就必须…

十天学完基础数据结构-第三天(数组(Array))

数组的基本概念 数组是一种线性数据结构,用于存储相同数据类型的元素。它具有以下基本概念: 元素:数组中的每个数据项称为元素,可以是整数、浮点数、字符等。 索引:每个元素在数组中都有一个唯一的位置,称…

JavaScript系列从入门到精通系列第十四篇:JavaScript中函数的简介以及函数的声明方式以及函数的调用

文章目录 一:函数的简介 1:概念和简介 2:创建一个函数对象 3:调用函数对象 4:函数对象的普通功能 5:使用函数声明来创建一个函数对象 6:使用函数声明创建一个匿名函数 一:函…

2023最新使用微信小程序完成一键授权登录

前言: 使用开发工具:小程序。在我这一篇已经详细介绍了小程序的安装介绍http://t.csdnimg.cn/IEVc0今天我给大家带来的是微信的一键授权登录,保存用户信息,退出的功能!!!希望看完了这篇博客能够…

【python海洋专题十】Cartopy画特定区域的地形等深线图

【python海洋专题十】Cartopy画特定区域的地形等深线图 海洋与大气科学 前几期可以认为关于平面的元素画法🆗了 本期关于特定区域平面画法 全球区域水深图 本期内容 画某元素特定区域的平面图:我有两个方法: 第一个:裁剪nc文…

嵌入式学习笔记(45) NandFlash的接口

9.1.1 Nand的型号与命名 (1)K9F2G08:K9F表示是三星公司的NandFlash系列。2G表示Nand的大小是2Gbit(256MB)。08表示Nand是8位的(数据线有8根)。 (2)Nand命名中可以看出,厂家、系列型号、容量大小、数据位数 9.1.2 Nand的数据位 …

机器视觉工程师,努力方向错了,白费

努力方向错了,白费。 在这个知识经济,知识付费,知识大V横行的时代,知识似乎遍地都是。但你有没有想过,微博里的段子是不是知识?微信里的爆款文章是不是知识?得到App里的音频是不是知识&#xf…

OpenGLES:绘制一个混色旋转的3D球体

一.概述 前面几篇博文讲解了如何使用OpenGLES实现不同的3D图形 本篇博文讲解怎样实现3D世界的代表图形:一个混色旋转的3D球体 二.球体解析 2.1 极限正多面体 如果有学习过我前几篇3D图形绘制的博文,就知道要想绘制一个3D图形,首先要做的…

基于Java的校园二手书交易平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

挑战自己,编程你的五子棋:Python+Pygame实践经验分享

引言 五子棋,古老而经典,是一种两人对抗的策略棋类游戏。想要体验制作游戏的乐趣吗?本文将详细指导你如何使用Python语言和Pygame库,一步步打造自己的五子棋游戏! 1. 开始之前:重要准备 首先&#xff0…

使用DNS查询Web服务器IP地址

浏览器并不具备访问网络的功能,其最终是通过操作系统实现的,委托操作系统访问服务器时提供的并不是浏览器里面输入的域名而是ip地址,因此第一步需要将域名转换为对应的ip地址 域名:www.baidu.com ip地址是一串数字 tcp/ip的网络结…

项目进展(六)-继续学习32位ADC芯片ADS1285

一、数据手册学习 1.1时序图 SPI时序图,这是很重要的一个地方,一定要在代码中将SPI配置成对应的模式。 先放一堆截图在这吧,一些引脚的功能及特性还未看到,等具体了解之后再详细介绍下面几张截图的时序: 1.2 内…

大模型RLHF算法更新换代,DeepMind提出自训练离线强化学习框架ReST

文章链接: https://arxiv.org/abs/2308.08998 大模型(LLMs)爆火的背后,离不开多种不同基础算法技术的支撑,例如基础语言架构Transformer、自回归语言建模、提示学习和指示学习等等。这些技术造就了像GPT-3、PaLM等基座…

问答雕虫1

问题: 现在有如下表 假设按时间顺序,记录中连续出现0.2 0.3 0.5 0.7四条记录记为一次有效数据组,统计一段时间范围内,有效数据组出现的次数,最终计算有效数据组在整个时间范围内的记录的占比。用mysql语句或者函数如何…

uniapp uni.showToast 一闪而过的问题

问题:在页面跳转uni.navigateBack()等操作的前或后,执行uni.showToast,即使代码中设置2000ms的显示时间,也会一闪而过。 解决:用setTimeout延后navigateBack的执行。

css自学框架之选项卡

这一节我们学习切换选项卡,两种切换方式,一种是单击切换选项,一种是鼠标滑动切换,通过参数来控制,切换方法。 一、参数 属性默认值描述tabBar.myth-tab-header span鼠标触发区域tabCon.myth-tab-content主体区域cla…

C语言动态内存管理

🐵本篇文章将会对动态内存管理相关知识进行讲解 1. 为什么要存在动态内存管理❓ 目前我们掌握了两种开辟内存的方式,分别为: int a 10;//存放一个值 int arr[] { 1,2,3,4,5,6,7,8,9,10 };//存放一组数 这两种内存开辟方式都是静态的&#…

2023年山东省安全员C证证考试题库及山东省安全员C证试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年山东省安全员C证证考试题库及山东省安全员C证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大…