pandas apply函数_Pandas学习笔记(四)

本文是Pandas学习笔记的第四部分,主要介绍了如何使用apply函数处理数据,包括查找不重复的数据、排序以及处理空值。通过实例解析了在数据框中进行去重和排序的操作,同时探讨了如何查询和处理缺失值。
摘要由CSDN通过智能技术生成

前言

上一篇我们研究了Pandas的级联,这一节从如何在DataFrame中 处 理重复数据开始。

DataFrame中查找不重复的数据

在实际数据集中,经常会有大量重复的数据,为了去除重复,找到那些唯一的数据,在没有用Pandas之前,我个人对这类数据的处理是利用集合set的元素唯一性来实现,这样需要写不少的代码,但在Pandas中,只是一个函数即可搞定,下面我们来举例说明:

5d4b9a82553b0f6efb610621fe69f205.png

比如我们要查找列 col2 中的不重复数据,如果用 set 集合实现,我是这样子做的:

1c2c6f9a97c27c59f5435fd447be0b8a.png

如果用 Pandas 来完成上述功能,只用一句即可:

37d6dc4002f0907c0d4b49bc6fe403fd.png

如果要统计不重复数的个数,也只需要一句即可:

38cbee57697840ea06d3608517d0b4d5.png

要统计某一列数据中数字出现的频率,原来我只能是用字典来实现,代码如下:

c812c77f82635e5b2b054ce3a240b257.png

若用 Pandas 来处理,还是一条语句即可:

47df8167724f0f88ce0cccab723aa43b.png

从上述例子可以看出,采用 Pandas 来对数据处理,可以用很简洁的方式代替原本需要组合语句才能实现的功能。 下面我们再来看看对数据的批处理。

apply方法

关于applymap等函数,在本公众号前面的文章中有介绍过,在Pandas中,也实现了apply函数,下面举例说明:

86bd4098d7e53f16a01ea0e9c3037522.png

在上述例子中,我们自定义了一个求平方的函数,然后将刚才定义的数据框架的第1列数据分别应用到这个求平方函数中,即可得到该列每个数的平方,当然也可以用 Python 中内置的函数,比如对第3列数据求每个字符串的长度:

a04b1f2e9a4e5cb092d0b723ef0d106a.png

当然,我们还可以在 apply 中直接嵌入 lambda 函数:

7b5a8f0e2a250782710f7dbceff09a44.png

获取 DataFrame 属性 有时候我们要得到DataFrame的列名和行名,这时就要用到获取其属性的方法,下面举例说明:

9fc89dcb1fff1c690ab1c8f8b89bdc91.png

从上述输出结果来看,其列名是一个 Index 类型的数据,由于在定义 DataFrame 时,我们没有为其指定 index 选项,因此,它的 Index 采用的是 Pandas 默认的 RangeIndex 数字序列。

排序

对数据排序是经常要用到的操作,在Excel中可以以指定列对数据集排列,Pandas中也有类似的功能:

afe0df96e2b3f5562ee2ea663126df6a.png

当然也可以逆向排序,此时只需要为其指定一个参数 ascending=False 即可,它的默认值是 True ,即默认从小到大,下面显示其逆序排列:

b19c99c659a765ab4acef2728fd430e8.png

从上述结果输出可知, sort_values 会生成新的数据框架,不会修改原数据,如果要修改原数据,则需要 inplace=True ,这个在之前的学习笔记中也提到有类似的函数也采用的是这种处理方式。

关于空值的查询

在构建一个恰好够用的Pandas子集的时候,我们介绍过在Pandas中,查找空值有两个函数,一是isna,一是isnull,由于在DataFrame中是用numpy中的nan来表示空值,因此我们推荐只用isna来查询空值,比如构建一个含空值的数据集如下:

cdec4bd08c3fd2e5dd37efb7409c97ec.png

对其查询空值:

2bcd0e453367b553c420fedcac0e6bee.png

数据透视表( pivot table ) 熟悉Excel的同学一定对其中的数据透视表印象深刻,它可将原数据概述化(summarizes)为另一个表,在新的表中,可以很容易对进行分类、切片、过滤、排序、计数等等,下面我们来看一下Pandas中的透视表是如何创建的。先构建一个新的数据框架:

1caf8e53b1a595da127ef38fd7cc6d26.png

创建一个透视表要用到函数 .pivot_table ,下面我们将根据上面的 DataFrame 来创建一个透视表:

e16f86bd5a736db6d51bc3882bbc0094.png

pivot_table 的参数values是要透视的数据点,index是指定的关键列,columns代表应该被分析的列,比如上面生成的透视表第一行,即是棕色的狗对应的xD列值来算是1,而对应的yD列值来算是3。因为黑色的狗没有对应的y,因此第二行中y列下为NaN。其余类似。

小结

本文首先对Pandas中的数据去重进行了分析,又探索了apply函数的应用,接着对于数据的排序进行了说明,在文章的最后,我们介绍了数据透视表的生成方法。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值