【python】pandas库


简单介绍

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

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


  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值