利用python进行数据分析之Pandas库

(一)概述:Pandas是Python的第三方库,提供高性能易用数据类型和分析工具。引用该库的方法与numpy库类似,import pandas as pd作为一种约定,我们将pandas命名为pd。Pandas是基于numpy实现的,常与numpy和matplotlib一起使用。提供的数据类型:Series、DataFrame。前者是一维的数据类型而后者是二维的。围绕着这两个数据类型,Pandas提供了针对数据分析的许多操作;pandas更注重数据的应用表达。pandas支持大部分numpy语言风格的数组计算,尤其是数组函数以及没有for循环的各种数据处理(向量化:利用数组表达式来代替显示循环的方法)。两者最大的不同在于:pandas是用来处理表格型或异质型数据。而numpy则更适合处理同质型的数值类数组数据。pandas提供两个常用的工具数据结构:Series和DataFrame,下面我们就来介绍这两种数据结构的基本操作。
(二)Series类型:由一个值序列(与numpy中的类型相似)及与之相关的数据标签(索引)所组成。
1.基本创建
在这里插入图片描述
我们输出的数据被放置在了第二列,左侧的 0 1 2 3 就是pandas为我们自动增加的索引,也称之为自动索引。下边的dtype类型,由于pandas是根据numpy编写的,因此他沿用了numpy中的数据类型。我们这里的数据类型是64位整数类型。

在这里插入图片描述
对于这里的自动索引,我们可以通过在生成数组的时候进行修改,将其改为我们的自定义索引
在这里插入图片描述
通过上面的代码,我们可以发现索引已经由原来的 0 1 2 3变成了现在的 a b c d,其中的第二个参数中的 index = 我们可以去掉。
2.创建方法

我们可以通过一下几种方式进行 Series类型的创建:python列表、标量值、python字典、ndarray、其他函数。
在这里插入图片描述
上图中,我们传入了一个字典来进行数组的创建。我们可以发现,字典中的键被用作为了输出的索引,而字典中的值被用作了输出的值。
在这里插入图片描述
上图中,我们使用了np.array中的函数进行数组的生成,我们生成的是0-5的数组。当然,我们也可以在其后加上 index = 来修改索引列的内容。
3.基本操作
index获得我们数组的索引;values获得我们的所有数值
在这里插入图片描述
我们可以看到,我们得到的值与数组中的值相同,索引的起始点、终止点、步长。注意:尽管我们自定义了索引,但是我们仍然可以使用自动索引来访问该位置上的值。也就是说,自动索引是一直存在的,如果我们自定义了索引,那么自动索引则不会显示出来。如果我们将两者同时使用,则会出错
在这里插入图片描述
通过上图我们可以发现:当我i们想看具体的数组中值的时候,我们可以直接输入其下标来进行访问,返回值就是这个数字本身的类型,如果我们通过切片的方式进行访问的话,他返回的值会是一个Series类型
我们也可以 in 来判断字典中的键是否存在于该字典当中(类似于字典的操作)
在这里插入图片描述
我们可以查看 ‘a’ 是否存在于自定义索引中。但是这个方法不适用于判断自动索引
(三)DataFrame类型:他表示的是矩阵的数据表,包含以排序的列集合,每一列可以是不同的值类型(数值、字符串、布尔值等)。他既有行索引也有列索引,可以被视为一个共享相同索引的Series的字典。在DataFrame中,数据被存储为一个以上的二维块,而不是列表、字典或者其他的一维数组集合。但是,尽管他是二维的,但我们仍然可以利用分层索引在DataFrame中展现更高维度的数据。DataFrame是由索引加多列数据组成。纵向的表明不同行之间的索引叫index,轴叫0轴(axis = 0),横向的表明不同列之间的索引叫column, 轴叫 1 轴(axis = 1)。行索引叫index,列索引叫column。
1.基本创建:DataFrame类型可以由以下类型创建:二维的ndarray对象、一维ndarray、列表、字典、元组或者Series构成的字典、Series类型、其他的DataFrame类型。假设我们从二维的ndarray对象创建。
在这里插入图片描述
上图中,我们采用arange()函数创建了一个从 0 到 9 的 5 行 2 列的数组。我们可以看到在我们创建的列表的左侧是默认的行索引, 从 0 开始。上方时默认的列索引,同样是默认从 0 开始。
在这里插入图片描述
上图中,对于第一个数组的创建,我们使用了列表类型的字典进行创建,可以看出我们字典的键被用作了列索引,值被用作了数组的值,数组的行索引由系统自动生成;对于第二个数组的创建,我们采用了字典的方式进行DataFrame类型变量的创建,并引用了Series来进行index的修改。不难发现,第二个创建好的数组的左下角没有数字(他显示的时NaN),这是因为我在创建数组的时候,第一个字典的值有 3 个,而第二个字典的值有 4 个。所以就会缺失一个数据,对于缺失的数据,系统就会给出一个NaN来进行填充。综上,我们说。用户可以自己给出想要的行列索引,也可以由系统来自动生成行列索引,数据如果不全的话,系统会自行进行补全。
为了方便讲述后续的处理操作,我们创建一个成绩单表格如下:
在这里插入图片描述
我们可以查看表格的行、列索引,某一行、列的数据。
在这里插入图片描述
我们使用index()方法查看数组的索引,使用columns查看第一行的索引。注意:因为我们采用字典进行数组生成,由于字典当中的每一个键值对之间是无序的,因此生成的数组当中列的顺序也可能和你输入的顺序不同
在这里插入图片描述
如上图所示,我们可以采用a[ ](方括号中填想要查看的内容)的方式来查看我们想要看的数据,当我想用.ix()查询某一行的数的时候,我尝试了视频中介绍的这个方法,然后,神奇的事情出现了,请看下图:
在这里插入图片描述
他没有像视频里那样直接显示出该行的数据,而是给我了一些提示,起初小编并不在意(看不到英语)后来定睛一看,我居然看懂了,然后就将代码换成了如下图中代码:
在这里插入图片描述
其实这个算是提示(并没有报错,因为正确的结果已经显示了出来)吧:大致意思就是你要用.loc去替换.ix方法。然后结果就和视频的一样了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值